4

私のシナリオは (私には) 非常に単純に見えますが、解決策が見つかりませんでした。

私はこのシナリオを持っています

public class Class<T> : IInterface where T : class
{ 

}

インターフェイスを汎用にすることはできません (WCF ライブラリから取得)。

だから私はこのようなインターフェースを登録したい

container.RegisterType(typeof (IInterface ), typeof (Class<>));

そしてそれを T で解決します

どうすればいいですか?私は何が欠けていますか?

私の意図は次のようなことをしています

container.Resolve<IInterface>(/* specify T */);
4

2 に答える 2

8

非制御インターフェイスを使用して解決する必要がない場合は、ジェネリックを使用して非制御インターフェイスから派生する独自の制御インターフェイスを作成できます。次に、オープン ジェネリックを登録し、クローズ ジェネリック型を解決できます。

public interface IControlled<T> : IUncontrolled {}
public class Controlled<T> : IControlled<T> {}

container.RegisterType(typeof(IControlled<>), typeof(Controlled<>));

IUncontrolled instance = container.Resolve<IControlled<string>>();
于 2013-08-30T05:41:28.370 に答える