我在 AutoFac 中使用动态实例化:
public class X: I_X
{
public X(String p1, String p2)
{
...
}
}
public class A: I_A
{
public A(Func<String, String, I_X> x_Factory)
{
I_X my_x = x_Factory("one", "two");
...
}
}
Autofac 按预期解决了这个问题。
但是假设我要在一个 DLL 中使用此代码,该代码也被其他没有 AutoFac 支持的项目并行使用:我需要如何为“A”的构造函数准备参数“x_Factory”并传递它,以便它可以工作?
var manual_x_Fac = <what has to be done?>
var a_object = new A(manual_x_Fac)
如果有人能帮助我,我会很高兴。谢谢你
您只需创建一个函数,例如使用 lambda 表达式:
var manual_x_Fac = (string s, string s1) => new X(s, s1);
var a_object = new A(manual_x_Fac);
如果内联参数,那就更方便了:
var a_object = new A((s, s1) => new X(s, s1));