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

C#中如何将ObjectDTO初始化逻辑封装为可复用静态方法?

可以封装静态方法实现对象初始化逻辑复用

完全可以通过封装静态方法来复用这段ObjectDTO的初始化逻辑,下面是几种实用的实现方式:

1. 在ObjectDTO类内添加静态工厂方法

直接把映射逻辑封装在目标DTO类内部,既符合单一职责又方便调用:

public class ObjectDTO
{
    // 假设你的DTO属性定义
    public int Id { get; set; }
    public int CSTrancheId { get; set; }
    public string DMBalExternalId { get; set; }

    // 静态工厂方法,接收两个源对象作为参数
    public static ObjectDTO FromLinks(LinkOne linkOne, LinkTwo linkTwo)
    {
        return new ObjectDTO
        {
            Id = linkOne.Id,
            CSTrancheId = linkOne.CSTrancheId,
            DMBalExternalId = linkTwo.DMBalExternalId
        };
    }
}

调用时直接在LINQ的select中使用:

select ObjectDTO.FromLinks(linkOne, linkTwo)

2. 独立静态工具类封装

如果不想让DTO类承担映射职责,可以单独创建一个映射工具类:

public static class ObjectDTOMapper
{
    public static ObjectDTO MapFromLinks(LinkOne linkOne, LinkTwo linkTwo)
    {
        return new ObjectDTO
        {
            Id = linkOne.Id,
            CSTrancheId = linkOne.CSTrancheId,
            DMBalExternalId = linkTwo.DMBalExternalId
        };
    }
}

调用方式:

select ObjectDTOMapper.MapFromLinks(linkOne, linkTwo)

3. 扩展方法实现

如果习惯链式调用的风格,可以用扩展方法封装:

public static class LinkExtensions
{
    public static ObjectDTO ToObjectDTO(this LinkOne linkOne, LinkTwo linkTwo)
    {
        return new ObjectDTO
        {
            Id = linkOne.Id,
            CSTrancheId = linkOne.CSTrancheId,
            DMBalExternalId = linkTwo.DMBalExternalId
        };
    }
}

调用时更简洁:

select linkOne.ToObjectDTO(linkTwo)

以上三种方式都能有效避免重复编写初始化逻辑,你可以根据项目的代码组织规范选择合适的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:51:11