1

次のクラスがあるとします。

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>>();

4

1 に答える 1