C#のWinFormアプリケーションで、でMicrosoft.Extensions.DependencyInjectionを利用する

はじめに

これまでデスクトップアプリ(WinForms)の開発では、MEFで開発を行ってきたが、
MEFはなくなるとのことで、新たなDIとしてMicrosoft.Extensions.DependencyInjectionを
試してみた

Microsoft.Extensions.DependencyInjection は、.NET(特に ASP.NET Core / .NET Core / .NET 6+)で使われる標準の依存性注入(DI: Dependency Injection)フレームワークです。

処理概要は以下の通り

・FormからDBアクセスクラスのDaoクラスを利用する
・FormもDaoもDependencyInjectionで生成する。
・DIで生成するクラスは[AutoRegister] という属性定義で制御する

AutoRegisterAttribute.cs

まず DI 登録を制御するための属性を作ります。
ServiceLifetime を属性で指定できるのがポイント(Transient / Scoped / Singleton)

UserDao.cs

Dao クラス(DBアクセス)

MainForm.cs

Form も DI 対象にする

ServiceCollectionExtensions.cs

AutoRegister を使って自動登録する拡張メソッド

Program.cs

シェアする

  • このエントリーをはてなブックマークに追加

フォローする