C# 如何通过autofac注册继承的类和接口
我有一个场景,它迫使我从基本服务派生出一些服务类,以及一些数据访问类和接口。 这些是我的基本工作单元、接口和DAL注册表:C# 如何通过autofac注册继承的类和接口,c#,dependency-injection,autofac,C#,Dependency Injection,Autofac,我有一个场景,它迫使我从基本服务派生出一些服务类,以及一些数据访问类和接口。 这些是我的基本工作单元、接口和DAL注册表: public interface IUnitOfWork : IDisposable { } public class UnitOfWork: IUnitOfWork { protected override void OnModelCreating(DbModelBuilder modelBuilder) {
public interface IUnitOfWork : IDisposable
{
}
public class UnitOfWork: IUnitOfWork
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}
}
public class DalRegistery : IRegistery
{
public void Register(ContainerBuilder builder)
{
builder.RegisterType<UnitOfWork>()
.As<IUnitOfWork>()
.As<DbContext>()
.InstancePerLifetimeScope();
}
}
现在,我尝试注册childUnitOfwork,而不是注册UnitOfwork(基本工作单元),我编写了以下代码:
public class ChildDalRegistery : IRegistery
{
public void Register(ContainerBuilder builder)
{
builder.RegisterType<ChildUnitOfWork>().As<IChildUnitOfWork>().As<DbContext>.InstancePerLifetimeScope();
}
}
公共类childalRegistry:iRegistry
{
公共无效登记簿(集装箱建造商)
{
builder.RegisterType();
}
}
但它甚至不会调用我的childalRegistry,甚至应用程序也不会启动。Autofac中是否有注册派生成员的方法
注意:IRegistery是一个自定义接口,用于在application start中注册我的类。能否在application start中显示代码?您如何使用
dalRegistry
或childdalRegistry
?您的课程是否依赖于IUnitOfWork
或IChildUnitOfWork
?如果它们依赖于IUnitOfWork
,那么您需要将IUnitOfWork
映射到childalRegistry
。我从iRegistry派生的所有类都收集在app start中,我想注册的是自己层中的UnitOfwork和ChildUnitOfWork(正如我提到的,ChildUnitOfWork是UnitOfwork的子级)
public class ChildDalRegistery : IRegistery
{
public void Register(ContainerBuilder builder)
{
builder.RegisterType<ChildUnitOfWork>().As<IChildUnitOfWork>().As<DbContext>.InstancePerLifetimeScope();
}
}