次のクラスがあるとします。
public class Setup { }
public class Configuration<T> where T : class
{
internal Configuration(Setup setup) { }
}
public class Process<T> where T : class
{
internal Process(Configuration<T> configuration) { }
}
これらのクラスをDryIocに登録したいので、それぞれProcess<T>
がシングルトンである必要があります(そうなるようにConfiguration<T>
)。したがって、Process<ClassA>
同じインスタンスを解決し、同じProcess<ClassB>
ことを行います。しかしProcess<ClassA>
、 とProcess<ClassB>
は 2 つの異なるインスタンスになります。
についても同様Configuration<T>
です。
これら3つのクラスを登録して、必要なものを達成するにはどうすればよいですか?
コンストラクターは internal であることに注意してください。
これは私が成功せずに行ったことです:
var container = new Container();
container.Register<Setup>(Reuse.Singleton);
container.Register(typeof (Configuration<>),
made: Made.Of(typeof (Configuration<>).GetConstructorOrNull(true, typeof (Setup))));
container.Register(typeof(Process<>), Reuse.Singleton,
Made.Of(typeof(Process<>).GetConstructorOrNull(true, typeof(Configuration<>))));
例として、「タイプ 'System.NullReferenceException' の例外が DryIoc.dll で発生しましたが、ユーザー コードでは処理されませんでした」と表示されます。var a = container.Resolve<Process<EventArgs>>();