Unity Batch Registrati per convenzione

Sto cercando di fare l’equivalente del seguente codice Autofac in Unity IoC.

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

Questo sostituisce sostanzialmente la registrazione individuale di quanto segue:

 DataSourceDataRepository : DataRepository, IDataSourceDataRepository 

Per chiarezza: questo registra tutti i miei tipi di repository come interfacce implementate, quindi quando inserisco IDataSourceDataRepository ottengo un DataSourceDataRepository, ecc.

Nell’unità non sono stato in grado di andare oltre a fare uno alla volta manualmente. Il codice di prova mostra solo un errore di registrazione.

Il mio tentativo:

 container.RegisterType(new HierarchicalLifetimeManager()); container.RegisterTypes( AllClasses.FromLoadedAssemblies().Where(t => typeof(IRepository).IsAssignableFrom(t)), getLifetimeManager: t => new TransientLifetimeManager(), getInjectionMembers: t=> new InjectionConstructor[] {new InjectionConstructor(typeof(RepositoryConnection)) } ); 

Questo dovrebbe funzionare:

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