使用带有参数的构造函数向IOC注册一个类(具体类无接口)

时间:2019-01-03 19:13:27

标签: dryioc

出于任何原因,我都查看了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));

1 个答案:

答案 0 :(得分:1)

container.RegisterDelegate<ISampleClass>(
    _ => new SampleClass(mainActivity),
    Reuse.Singleton);

container.Register<ISampleClass, SampleClass>(
    Reuse.Singleton,
    made: Parameters.Of.Type<Activity>(_ => mainActivity));
相关问题