如何在c#中实现泛型方法

本文关键字:实现 泛型方法 | 更新日期: 2023-09-27 18:15:41

我在制作的serviceContract中有很多这样的方法:

   TemplateContract CreateTemplateContract(Template t)
    {
        return new TemplateContract()
        {
            Id = t.Id,
            Name = t.Name,
            Description = t.Description,
            DataLayoutId = t.DataLayoutId,
            FieldLayoutId = t.FieldLayoutId,
            SheetId = t.SheetId,
            ThemeId = t.ThemeId
        };
    }
    Template CreateTemplate(TemplateContract t)
    {
        return new Template()
        {
            Id = t.Id,
            Name = t.Name,
            Description = t.Description,
            DataLayoutId = t.DataLayoutId,
            FieldLayoutId = t.FieldLayoutId,
            SheetId = t.SheetId,
            ThemeId = t.ThemeId
        };
    }

这些是将POCO转换为DTO的方法,反之亦然,我想知道如果我可以一些这些通用的,它会更干净,但我没有太多的经验,在通用编码和不能安静地弄清楚它还

如何在c#中实现泛型方法

你最好看看AutoMapper它可以自动为你做很多映射

如果你真的想使用泛型,除非它们共享一个基类这是不可能的,如果它们需要,你需要在基类和一个没有参数的构造函数上使用泛型约束所以你的方法签名会像

public TemplateBase Map< TemplateBase>(TemplateBase request) where TemplateBase : new
{
return new TemplateBase()
{
....
}
}

您是否尝试过以一种非常简单的方式自动绘制该地图?

如果你不想使用这个库,你至少可以看看代码来获得灵感。