🐥note.

小鳥とMicrosoft <3 なエンジニアの技術Blog📚

Blazor WebAssemblyで設定ファイルの値をハンドリングする(IConfiguration, IOptionsの備忘録)

Blazor WebAssemblyのTemplateが更新されてからIConfigurationStartup.csから消えてしまったのと、IOptionsの使い方を忘れてしまっていたので記録として残しておきます。

IConfigurationを使う

Startup.csでConstructor Injectionするだけ。

public class Startup
{
+   public IConfiguration Configuration { get; }
+   public Startup(IConfiguration configuration)
+   {
+       Configuration = configuration;
+   }
}

appsettings.jsonとかの設定値をDIで登録したService Classとかで使いたい

Configure<T>で登録してDIで登録するClassでIOptions<T>を受け取る。

class StorageConnectionString
{
    public string Key { get; set; }
    public string EndPoint { get; set; }
}

public void ConfigureServices(IServiceCollection services)
{
    // Bindを使ってインスタンス化して使用することも可能
    var storageConnectionString = new StorageConnectionString();
    Configuration.GetSection("StorageConnectionString")
                .Bind(storageConnectionString);

    // HogeHoge classで使用できるよう`Configure<T>`で登録
    services.Configure<StorageConnectionString>(Configuration.GetSection("StorageConnectionString"));

    // サービス登録
    services.AddSingleton<IHogeHoge, HogeHoge>();
}

// DIで登録するサービス
public class HogeHoge : IHogeHoge
{
    public StorageConnectionString Options { get; }
    public HogeHoge(IOptions<StorageConnectionString> options)
    {
        Options = options.Value;
    }
}

読み込むappsettings.jsonの例

{
    "StorageConnectionString": {
        "Key": "hoge",
        "EndPoint": "fuga"
    }
}

おわり

Blazor WebAssemblyと言いつつ半分はGeneric Hostの話ですね…。

これで忘れてもBlog読めば分かるので ヨシッ!😼

属性スプラッティングで自作Razor ComponentへHTML属性(id, classなど)を設定する方法

自作Razor ComponentにHTML属性を割り当てたいケースは多々あるかと思います。
例えばid, classなんかはその最たるものではないでしょうか。

続きを読む

Blazor WebAssemblyでgRPC-Webを使用する - Standalone編 -

前回のHosted編はBlazor WebAssemblyとgRPCサーバーが一体となった構成でした。 今回はStandalone編ということで、Blazor WebAssemblyとgRPCサーバーを分けて作ります。

お互いを分離することでBlazor Assemblyは静的なWebサイトとして置いて、gRPCサーバはPaaSに置く、そんな感じにデプロイできます。とても自然ですね。

前回同様、完成したソースコードこちらと概ね同じものになるはずです。

続きを読む

Blazor WebAssemblyでgRPC-Webを使用する - Hosted編

先月の話ですが、Blazor WebAssemblyからgRPC-Webを使用する実験的サポートの発表がありました。

blog.stevensanderson.com

devblogs.microsoft.com

本エントリはBlazor WebAssemblyプロジェクトのREST通信をgRPC-Webに置き換える手順を追ってみたいと思います。 先生役はSteve Sanderson氏がGitHubで公開しているgRPC-Webのサンプルです。

続きを読む