gpt4 book ai didi

.net - Unity.Resolve 如何知道使用哪个构造函数?

转载 作者:行者123 更新时间:2023-12-03 07:53:23 25 4
gpt4 key购买 nike

给定一个具有多个构造函数的类 - 我如何告诉 Resolve 使用哪个构造函数?

考虑以下示例类:

public class Foo
{
public Foo() { }
public Foo(IBar bar)
{
Bar = bar;
}
public Foo(string name, IBar bar)
{
Bar = bar;
Name = name;
}
public IBar Bar { get; set; }
public string Name { get; set; }
}

如果我想使用 Resolve 创建一个 Foo 类型的对象,Resolve 如何知道要使用哪个构造函数?我怎么能告诉它使用正确的呢?假设我有一个注册了 IBar 的容器 - 它会理解它应该支持采用 IBar 的构造函数吗?如果我也指定了一个字符串 - 它会使用 (string, IBar)构造函数?
Foo foo = unityContainer.Resolve<Foo>(); 

并且请忽略一个事实,如果类只有一个构造函数,它可能会更容易......

最佳答案

When a target class contains more than one constructor, Unity will use the one that has the InjectionConstructor attribute applied. If there is more than one constructor, and none carries the InjectionConstructor attribute, Unity will use the constructor with the most parameters. If there is more than one such constructor (more than one of the “longest” with the same number of parameters), Unity will raise an exception.



取自 link text

关于.net - Unity.Resolve 如何知道使用哪个构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2470102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com