.net 子容器中的统一约束类型\实例解析

.net 子容器中的统一约束类型\实例解析,.net,unity-container,.net,Unity Container,如何限制子unityContainer中的类型解析 例如 内部接口ITestInterface {} 公共类测试:ITestInterface {} 甲级 { 公共A(ITestInterface-testInterface) { } } 班级计划 { 静态void Main(字符串[]参数) { var container=new UnityContainer(); 测试=新测试(); 容器.注册状态(试验); var childContainer=container.CreateCh

如何限制子unityContainer中的类型解析

例如

内部接口ITestInterface
{}
公共类测试:ITestInterface
{}
甲级
{
公共A(ITestInterface-testInterface)
{    
}
}
班级计划
{
静态void Main(字符串[]参数)
{
var container=new UnityContainer();
测试=新测试();
容器.注册状态(试验);
var childContainer=container.CreateChildContainer();
//应该正常解决吗
container.Resolve();
//应该抛出异常!
//因为我想限制从父容器解析ITestInterface实例!
Resolve();
}
}

这样做确实是错误的。认真地重新考虑容器层次结构,您可能根本不需要层次结构

然而,如果你下定决心要这么做,你可以假装。使用引发异常的InjectionFactory在子级中重新注册该类型

childContainer.RegisterType<A>(
    new InjectionContructor(c => throw new InvalidOperationException(
        "No type A for you!"))));
childContainer.RegisterType(
新注入构造函数(c=>抛出新的InvalidOperationException(
“你没有A型!”;

是否希望派生容器拥有自己的注册集?因此,某些类只能从父容器派生?它不是派生容器,而是子容器。是的,我指的是儿童容器。抱歉搞混了。因此,您希望子容器拥有自己的注册集?默认情况下,子容器验证所有注册,如果未找到注册集,则搜索父容器中的类型。我希望强制父容器不解析子容器中的某些类型。
childContainer.RegisterType<A>(
    new InjectionContructor(c => throw new InvalidOperationException(
        "No type A for you!"))));