Unity 批量注册约定俗成
Unity Batch Register by convention
我正在尝试在 Unity IoC 中执行与以下 Autofac 代码等效的操作。
builder.RegisterAssemblyTypes(typeof (DataRepository<>).Assembly)
.Where(t => t.Name.EndsWith("Repository"))
.AsImplementedInterfaces();
这基本上取代了单独注册以下内容:
DataSourceDataRepository : DataRepository<DataSource>, IDataSourceDataRepository
为清楚起见:这会将我所有的存储库类型注册为其实现的接口,因此当我注入 IDataSourceDataRepository 时,我会得到一个 DataSourceDataRepository 等。
在团结中,我一直无法超越手动一次做一个。
测试代码只是显示注册失败
我的尝试:
container.RegisterType<RepositoryConnection>(new HierarchicalLifetimeManager());
container.RegisterTypes(
AllClasses.FromLoadedAssemblies().Where(t => typeof(IRepository).IsAssignableFrom(t)), getLifetimeManager: t => new TransientLifetimeManager(),
getInjectionMembers: t=> new InjectionConstructor[] {new InjectionConstructor(typeof(RepositoryConnection)) } );
这应该有效:
container.RegisterTypes(
AllClasses.FromAssemblies(typeof(DataRepository<>).Assembly)
.Where(t => t.Name.EndsWith("Repository")),
WithMappings.FromAllInterfaces);
我正在尝试在 Unity IoC 中执行与以下 Autofac 代码等效的操作。
builder.RegisterAssemblyTypes(typeof (DataRepository<>).Assembly)
.Where(t => t.Name.EndsWith("Repository"))
.AsImplementedInterfaces();
这基本上取代了单独注册以下内容:
DataSourceDataRepository : DataRepository<DataSource>, IDataSourceDataRepository
为清楚起见:这会将我所有的存储库类型注册为其实现的接口,因此当我注入 IDataSourceDataRepository 时,我会得到一个 DataSourceDataRepository 等。
在团结中,我一直无法超越手动一次做一个。 测试代码只是显示注册失败
我的尝试:
container.RegisterType<RepositoryConnection>(new HierarchicalLifetimeManager());
container.RegisterTypes(
AllClasses.FromLoadedAssemblies().Where(t => typeof(IRepository).IsAssignableFrom(t)), getLifetimeManager: t => new TransientLifetimeManager(),
getInjectionMembers: t=> new InjectionConstructor[] {new InjectionConstructor(typeof(RepositoryConnection)) } );
这应该有效:
container.RegisterTypes(
AllClasses.FromAssemblies(typeof(DataRepository<>).Assembly)
.Where(t => t.Name.EndsWith("Repository")),
WithMappings.FromAllInterfaces);