尝试使用标记接口失败,并显示 IEnumerable<>
本文关键字:显示 IEnumerable 失败 接口 | 更新日期: 2023-09-27 18:35:06
我试图使用unity在我自己的应用程序中模仿Orchard CMS中的一些东西。
好的,所以我要做的是这个...
假设我有一个名为 IDependency 的标记接口。
public interface IDependency{ }
然后我有几个接口挂在这个上面...
public interface ICustomerService : IDependency { }
public interface ICustomerRepository : IDependency { }
然后也上一些课...
public class CustomerService : ICustomerService {
public CustomerService(ICustomerRepository customerRepo){ }
}
public class SomOtherCustomerService : ICustomerService {
public CustomerService(ICustomerRepository customerRepo){ }
}
public class NicksController : Controller {
public NicksController(IEnumerable<ICustomerService> customerServices) { }
}
public class NicksSecondController : Controller {
public NicksSecondController(IEnumerable<ICustomerService> customerServices) { }
}
到目前为止我所拥有的..
var container = new UnityContainer();
container
.ConfigureAutoRegistration()
.ExcludeSystemAssemblies()
//.Include(If.Implements<IDependency>, Then.Register()
//.As<IDependency>().UsingLifetime<PerResolveLifetimeManager>())
.Include(t =>
typeof(IDependency).IsAssignableFrom(t), (type, builder) =>
{
builder.RegisterType(type);
foreach (var interfaceType in type.GetInterfaces()
.Where(itf => typeof(IDependency).IsAssignableFrom(itf))) {
builder = builder.RegisterType(interfaceType, type);
}
})
.ApplyAutoRegistration();
我在向我的尼克斯秒控制器注入 IEnumerable 时摔倒了......有什么想法吗??
干杯,尼克
开箱即用 Unity 只知道如何解析数组。看看关于代码复合体的TecX项目。它包含一个自定义扩展,教容器处理IEnumerable<T>
,IList<T>
和ICollection<T>
。该代码可以在TecX.Unity(文件夹集合)中找到。