我有构造函数

Foo(IColor c , int someNumber)

我只在运行时知道一些数字,我想在解析过程中调用此构造函数,并传递someNumber值和IColor进行独断解决。

像这样的东西:
container.Resolve<IFoo>(someNumber);

有可能做到吗?

最佳答案

是的,在匿名类型的实例中传递构造函数参数;属性名称必须与构造函数参数名称匹配:

IColor desiredColor = //whatever
int desiredNumber = //whatever else
IFoo foo = container.Resolve<IFoo>(new { c = desiredColor, somenumber = desiredArgumentValue });

如果您使用的C#较旧版本不支持匿名类型(甚至不支持匿名类型),则可以使用字典执行相同的操作:
IColor desiredColor = //whatever
int desiredNumber = //whatever
Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("c", desiredColor);
arguments.Add("somenumber", desiredNumber);
IFoo foo = container.Resolve<IFoo>(arguments);

关于c# - 将构造函数参数的一部分传递给温莎城堡容器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11726663/

10-14 18:11
查看更多