Unityからシンプルインジェクタに移行しようとしています。シンプルインジェクタでインジェクションを動作させるのに問題があります。複数のコンストラクタでジェネリックタイプを登録する
ワーキングユニティコード
var container = new UnityContainer();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
container.RegisterType(
typeof(ICacheManager<>),
new ContainerControlledLifetimeManager(),
new InjectionFactory((c, targetType, name) =>
CacheFactory.FromConfiguration(targetType.GenericTypeArguments[0], "myCache")));
私の試みを下回っている:
var registration = Lifestyle.Singleton.CreateRegistration(
typeof(ICacheManager<>),
typeof(BaseCacheManager<>),
container);
container.AddRegistration(
serviceType: typeof(BaseCacheManager<>),
registration: registration);
コンテナは、それが持つべきBaseCacheManager<Object>
を作成できるようにするために、私は次のようなエラーに
を取得しています1つの公共コンストラクタ
型にコンストラクタが1つしかないことを確認する必要があります。他のコンストラクタを削除します。 – Steven
返事をお寄せいただきありがとうございます。私はCacheManager.netの外部ライブラリを使用してキャッシュを支援しています。 2番目のコンストラクタを削除する以外の方法はありますか? –
これを処理できるDIフレームワークを使用できませんか?新しい軽量のMS(ドットネットコア)でもそれに対処できます。クラスの公開者を1人だけ許可するのはかなり大きな制限です~~ – MichaC