代码之家  ›  专栏  ›  技术社区  ›  developer9969

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

  •  1
  • developer9969  · 技术社区  · 7 年前

    我看过德莱奥的文件,不管是什么原因。

    我有以下内容

        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 回复  |  直到 7 年前
        1
  •  1
  •   dadhi    7 年前
    container.RegisterDelegate<ISampleClass>(
        _ => new SampleClass(mainActivity),
        Reuse.Singleton);
    

    container.Register<ISampleClass, SampleClass>(
        Reuse.Singleton,
        made: Parameters.Of.Type<Activity>(_ => mainActivity));
    
    推荐文章