2014-10-05 54 views
0

我嘗試註冊一個通用類型Repository<T>與接口IRepository<T>其中TIEntity註冊一個不同的通用類型作爲掃描

builder.RegisterAssemblyTypes(assemblies) 
     .Where(t => typeof(IEntity).IsAssignableFrom(t)) 
     .WithMetadata("Type", (t) => t) 
     .AsImplementedInterfaces() 
     .InstancePerLifetimeScope(); 

現在的問題是如何註冊的每個IEntity發現我的課

Repository<T>: IRepository<T> where T: IEntity 

回答

1

其實,你並不需要註冊的實體,您只需要註冊庫。 Autofac對開放和封閉類型的泛型都有很好的支持。從OpenGenerics文檔,註冊開放式泛型類型你的資料庫:

builder.RegisterGeneric(typeof(Repository<>)) 
    .As(typeof(IRepository<>)); 

現在可以解決關閉庫類型是這樣的:

var userRepo = container.Resolve<IRepository<User>>(); 
相關問題