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

使用工厂方法后能否通过大括号语法直接为返回对象填充属性

解决方案

你需要的功能是C#原生支持的对象初始值设定项语法,不需要修改现有Create方法的实现,直接调整调用写法即可生效:

正确调用写法

var tempNewObject = MDBShorterManager.Create<TblUser>() 
{ 
    variable1 = "content1", 
    variable2 = "content2" 
};

该语法由编译器自动生成等价的逐行属性赋值代码,和你当前手动写的多行赋值逻辑完全等效,无额外性能开销。


可选增强方案

如果需要支持更复杂的初始化逻辑(比如条件赋值、多步操作),可以给Create方法增加可选的初始化委托参数:

修改后的Create方法

public T Create<T>(Action<T> initAction = null) where T : MDBShorter
{
    try
    {
        var tempObject = (T)Activator.CreateInstance(typeof(T));

        tempObject.mdbShorterManager = this;

        // 执行自定义初始化逻辑
        initAction?.Invoke(tempObject);

        try
        {
            actionInjectDataToMDBShorter?.Invoke(tempObject);
        }
        catch(Exception ex)
        {
            ErrorLog.cw(ex.Message);
        }

        return tempObject;
    }
    catch (Exception ex)
    {
        ErrorLog.cw(ex.Message);
        return null;
    }
}

对应调用写法

var tempNewObject = MDBShorterManager.Create<TblUser>(u => 
{
    u.variable1 = "content1";
    u.variable2 = DateTime.Now.Year > 2024 ? "新内容" : "旧内容";
    // 可写任意自定义初始化逻辑
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:39:04