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
相关产品推荐
相关产品推荐

