C# 是否可以将命名和未命名的unity注册解析为同一实例(ContainerControl)
我们知道,命名注册是在构造函数注入中使用数组解决的C# 是否可以将命名和未命名的unity注册解析为同一实例(ContainerControl),c#,unity-container,ioc-container,C#,Unity Container,Ioc Container,我们知道,命名注册是在构造函数注入中使用数组解决的 // framework code var injectionMembers = new InjectionConstructor(); ... container.RegisterType(typeof(Employee), "emp1", new ContainerControlledLifetimeManager(), injectionMembers); container.RegisterType(typeo
// framework code
var injectionMembers = new InjectionConstructor();
...
container.RegisterType(typeof(Employee), "emp1",
new ContainerControlledLifetimeManager(), injectionMembers);
container.RegisterType(typeof(Employee), "emp2",
new ContainerControlledLifetimeManager(), injectionMembers2);
....
// user code
public class Manager
{
public Manager(Employee[] employee)
{
...
}
}
我期待着支持以下,当用户知道他们只是一个命名的注册
public class Manager
{
public Manager(Employee employee)
{
...
}
}
为了实现这一点,我想如果有一种方法,我可以做两个注册,一个在框架代码中有名字,一个没有名字,这可以解决这个问题
我当然可以做两次注册,但两次注册解决后会给出不同的实例。是否有一种方法可以进行两次注册,一次命名,另一次命名,解析后返回相同的实例
谢谢根据您想要实现的目标,如果此时可以实例化对象,您可以直接注册实例:
container.RegisterType<MyType>("name1", ...);
container.RegisterInstance<MyType>("name2", container.Resolve<MyType>("name1"));
container.RegisterType(“name1”,…);
container.RegisterInstance(“name2”,container.Resolve(“name1”);
这保证了同一实例在两个名称下都注册。我不确定您在这里要问什么如果您不提供注册的名称,它将不会包含在数组中。但是,我相信当注入单个对象而不是数组时,将使用未命名的注册。你能试着确认一下吗?@Callumlington,更新了这个问题,希望我说得有道理now@FabioSalvalai注册码是框架的一部分,不知道需要完成多少注册。在正常情况下(当注册和解析代码一起编写时),我同意您的建议,您想用它实现什么?我想知道这是否是一个x-y问题