Unity Batch按惯例注册

时间:2016-05-19 19:04:51

标签: c# inversion-of-control unity-container ioc-container

我正在尝试在Unity IoC中执行以下Autofac代码。

builder.RegisterAssemblyTypes(typeof (DataRepository<>).Assembly)
            .Where(t => t.Name.EndsWith("Repository"))
            .AsImplementedInterfaces();

这基本上取代了单独注册以下内容:

DataSourceDataRepository : DataRepository<DataSource>, IDataSourceDataRepository

为清楚起见:这会将我的所有Repository类型注册为其实现的接口,因此当我注入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)) } );

1 个答案:

答案 0 :(得分:1)

这应该有效:

container.RegisterTypes(
    AllClasses.FromAssemblies(typeof(DataRepository<>).Assembly)
        .Where(t => t.Name.EndsWith("Repository")),
    WithMappings.FromAllInterfaces);
相关问题