繁体   English   中英

如何在C#中制作泛型方法

[英]How to make Generic method in C#

我在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的方法,反之亦然,我想知道是否可以使用其中的一些通用代码,这样会更清洁,但是我在通用编码方面没有很多经验,也无法安静弄清楚了

您可能最好看看AutoMapper ,它可以自动为您完成很多映射

如果您真的想使用泛型,除非它们共享一个基类,那是不可能的,如果它们确实需要,我们需要对基类和不带参数的构造函数的泛型约束,那么您的方法签名就像

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

您是否以一种非常简单的方式尝试了AutoMapper映射?

如果您不想使用此库,则至少可以观看代码以获取灵感。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM