Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用autofac在类型为该类的类的构造函数中传递泛型接口_C#_Autofac - Fatal编程技术网

C# 如何使用autofac在类型为该类的类的构造函数中传递泛型接口

C# 如何使用autofac在类型为该类的类的构造函数中传递泛型接口,c#,autofac,C#,Autofac,我在c#中有以下类和接口。我不知道如何在AutoFac上注册它们 public interface ICustomer{void Validate();} public interface IValidation<T>{void Validate(T obj);} public class CustomerBase : ICustomer { private IValidation<ICustomer> validation

我在c#中有以下类和接口。我不知道如何在AutoFac上注册它们

    public interface ICustomer{void Validate();}
    public interface IValidation<T>{void Validate(T obj);}
    public class CustomerBase : ICustomer
    {
        private IValidation<ICustomer> validation = null;
        public CustomerBase(IValidation<ICustomer> obj)
        {
            validation = obj;
        }
        public virtual void Validate()=>validation.Validate(this);

    }
    public class Lead : CustomerBase
    {
        public Lead(IValidation<ICustomer> obj) : base(obj){}
    }
    public class LeadValidation : IValidation<ICustomer>
    {
        public void Validate(ICustomer obj){//Now validation Here......}
    }
公共接口ICCustomer{void Validate();}
公共接口验证{void Validate(T obj);}
公共类客户库:ICustomer
{
私有IValidation验证=null;
公共客户数据库(IValidation obj)
{
验证=obj;
}
公共虚拟void Validate()=>validation.Validate(此);
}
公共类主管:CustomerBase
{
公共铅(IValidation obj):基础铅(obj){}
}
公共类LeadValidation:IValidation
{
public void Validate(iccustomer obj){//Now validation Here…}
}

您需要为依赖项注入注册组件。这是通过创建一个
ContainerBuilder
并注册组件来完成的

//创建ContainerBuilder
var builder=new ContainerBuilder();
//注册您的组件
builder.RegisterType().As();
builder.RegisterInstance(新的MyConcreteType2()).As();
...
//构建您的容器
var myContainer=builder.Build();
然后,为了得到所需的组件,您所要做的就是

//创建一个作用域,以便AutoFac处理
//处理不再需要的对象
使用(var scope=myContainer.BeginLifetimeScope())
{
//解决您需要的组件。AutoFac将负责
//解析它们的依赖关系并为您实例化它们
var requiredComponent=scope.Resolve();
//现在您可以使用您的组件了!
}
以下是一段非常有用的视频,可以帮助您了解如何使用AutoFac及其用途: