Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以将命名和未命名的unity注册解析为同一实例(ContainerControl)_C#_Unity Container_Ioc Container - Fatal编程技术网

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问题