我有一个低于 lambda 默认
Employee
构造函数,工作正常。
this.For<IEmployee>().Use(() => new Employee());
现在我想根据
flag
值调用另一个构造函数。flag
是 true
,则调用带参数的 Employee
构造函数。flag
是 false
调用默认构造函数。
this.For<IEmployee>().Use(
if (flag)
{
() => new Employee("Test");
}
else
{
() => new Employee());
});
this.For<IEmployee>().Use(() => flag ? new Employee("Test") : new Employee());
看起来你只是把语法/结构搞混了。 lambda 的这一部分:
() =>
是函数头。它后面的所有内容都是函数body。你正试图围绕它构建你的
if
结构。从概念上讲,这类似于:
if (someCondition)
{
public Employee SomeFunc() { return new Employee("Test"); }
}
else
{
public Employee SomeFunc() { return new Employee(); }
}
如您所见,这不是构建代码的方法。相反,将逻辑移至函数体的内。例如:
this.For<IEmployee>().Use(() => {
if (flag)
{
return new Employee("Test");
}
else
{
return new Employee());
}
});
(可以重构为更紧凑的东西,但出于说明目的而留在这里。)