在C#中将一种对象类型转换为另一种对象的通用自定义方法

时间:2018-12-21 00:06:52

标签: c# asp.net asp.net-mvc asp.net-core

我正在尝试实现一种通用方法,将c#中的一个对象转换为另一个对象。

这是我尝试过的一些代码

 public interface IDTOMapper<TSource, TDestination>
        {
            TDestination Convert(TSource source_object);
        }


    public class DtoMapper<TSource, TDestination> : IDTOMapper<TSource, TDestination>
        {
            public TDestination Convert(TSource source_object)
            {
           // How to write the code to convert one class object to another

            }
        }

我在convert方法中使用的代码有很多错误,谁能让我知道如何使用任何类类型的对象实现。我发现一些示例具有特定的类对象转换。

当我在Google上搜索时,发现有自动映射器库,我不想使用自动映射器库。只想写自定义通用方法

一些参考

Best Practices for mapping one object to another

https://softwareengineering.stackexchange.com/questions/301580/best-practices-regarding-type-mapping-and-extension-methods

Generic method to map objects of different types

https://www.codeproject.com/Tips/781202/Csharp-Custom-Mapper

1 个答案:

答案 0 :(得分:1)

您说您不想使用自动映射器,但是您尝试编写的是同一件事。您将重新发明轮子并编写自己的自动映射器。

我强烈建议您使用现有的库,例如AutoMapper。这样会更快,并且错误更少。

如果不是那样,那么我本人将避免尝试自动执行此任务。对于每个ViewModel类,添加一个方法CopyFromBusiness并手动在其中编写复制代码。是的,它很重复,但是编写自己的自动映射器几乎可以完成很多工作,并且结果总是比现有的库差。手动编写的CopyFromBusiness方法(在运行时)将是最快的选择,并且将来,由于没有任何隐藏的魔术,代码的维护也将更加容易。