Dependency injection 扫描并注册应用程序中实现接口的所有类的依赖项
下面的代码来自一个使用结构图的示例应用程序Dependency injection 扫描并注册应用程序中实现接口的所有类的依赖项,dependency-injection,ioc-container,autofac,Dependency Injection,Ioc Container,Autofac,下面的代码来自一个使用结构图的示例应用程序 ObjectFactory.Initialize(x => { x.Scan(scan => { scan.TheCallingAssembly(); scan.AssemblyContainingType<IAppointmentRepository>(); scan.AssemblyContainingType<SchedulingContext>(
ObjectFactory.Initialize(x =>
{
x.Scan(scan =>
{
scan.TheCallingAssembly();
scan.AssemblyContainingType<IAppointmentRepository>();
scan.AssemblyContainingType<SchedulingContext>();
scan.AssemblyContainingType<ScheduleRepository>();
scan.AssemblyContainingType<CrudContext>();
scan.WithDefaultConventions();
scan.ConnectImplementationsToTypesClosing(typeof(ClientPatientManagement.Core.Interfaces.IRepository<>));
scan.ConnectImplementationsToTypesClosing(typeof(IHandle<>));
});
};
StructureMap的
ConnectionImplementationsToTypesClosing
方法将实现连接到打开的泛型类型
因此:
scan.ConnectImplementationsToTypesClosing(typeof(IHandle<>));
scan.connectionImplementationstotypesClosing(typeof(IHandle));
将注册关闭打开的泛型类型IHandle的所有实现
AutoFac中的等效项为:
builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies())
.AsClosedTypesOf(typeof(IHandle<>))
.AsImplementedInterfaces();
builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblyTypes())
.AsClosedTypesOf(typeof(IHandle))
.a实现接口();
有关更多信息,请参阅以下链接
scan.ConnectImplementationsToTypesClosing(typeof(IHandle<>));
builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies())
.AsClosedTypesOf(typeof(IHandle<>))
.AsImplementedInterfaces();