出于任何原因,我都查看了dryIoc文档。
我找不到用参数的构造函数注册单例的方法
我有以下
public class MainActivity //no interface
{
//etc... omitted for brevity
}
public class SampleClass : ISampleClass
{
private readonly Activity mainActivity;
public SampleClass(Activity mainActivity)
{
this.mainActivity = mainActivity;
}
}
public interface ISampleClass
{
//etc... omitted for brevity
}
//注册
///通常,当我有一个没有参数的构造函数时,我将执行以下操作:
container.Register<ISampleClass,SampleClass>(Reuse.Singleton);
container.Register<ISampleClass,SampleClass>(Reuse.Singleton);
container.UseInstance(mainActivity);
问题 当SampleClass将参数用作构造函数时,如何注册以上代码?
我尝试如下,但没有编译
container.Register<ISampleClass>(Made.Of(() => new SampleClass(mainActivity));
container.Register<SampleClass>(made: Parameters.Of.Type<MainActivity>(Reuse.Singleton));
答案 0 :(得分:1)
container.RegisterDelegate<ISampleClass>(
_ => new SampleClass(mainActivity),
Reuse.Singleton);
或
container.Register<ISampleClass, SampleClass>(
Reuse.Singleton,
made: Parameters.Of.Type<Activity>(_ => mainActivity));