You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何根据条件实现IEmployee的不同构造函数实例化?

问题描述

我有一个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());
});
正确实现方式

不能直接在方法参数中嵌入if语句块,因为Use方法需要接收一个Func<IEmployee>类型的委托实例。可以通过以下两种方式实现:

方式一:三元表达式(简洁写法)

直接用三元运算符根据flag返回对应的Lambda委托,符合方法参数的语法要求:

this.For<IEmployee>().Use(flag ? () => new Employee("Test") : () => new Employee());

方式二:先定义委托变量(可读性优先)

如果逻辑后续可能扩展,先把工厂逻辑拆分到变量赋值中,代码结构更清晰:

Func<IEmployee> employeeFactory;
if (flag)
{
    employeeFactory = () => new Employee("Test");
}
else
{
    employeeFactory = () => new Employee();
}
this.For<IEmployee>().Use(employeeFactory);

内容的提问来源于stack exchange,提问作者Shakeer Hussain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 10:10:09