【发布时间】:2018-12-21 00:06:51
【问题描述】:
我,正在尝试实现一个通用方法,在 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
}
}
我在转换方法中使用的代码有很多错误。谁能告诉我如何使用任何类类型的对象来实现。我发现的一些示例具有特定的类对象转换。
当我谷歌时,我发现有 auto-mapper 库,我不想使用 auto-mapper 库。只想写自定义泛型方法
部分参考
Best Practices for mapping one object to another
Generic method to map objects of different types
https://www.codeproject.com/Tips/781202/Csharp-Custom-Mapper
【问题讨论】:
-
“转换”是什么意思?如果它们彼此继承,则可以进行强制转换。如果不是,为什么不呢?为什么你需要这样做?这是一个非常奇怪的要求;在正常情况下,您不需要这样做。或者,映射器正是您所需要的。
-
它们不是相互继承的。一个是数据库模型,另一个是几乎具有相同属性的视图模型。我知道自动映射器会做那件事,但我不想为此使用自动映射器。
-
那么,你到底有什么问题。你还没有问过问题。
-
我在转换方法中使用的代码不起作用。我已经更新了代码。
-
您可以为此使用反射,因此只能匹配属性。任何自动映射器最终都会这样做。你可以在这里找到它stackoverflow.com/questions/2142650/…。但是如果你的属性不一样,那么我认为你不可能有一个通用的实现,你必须为每个案例有单独的实现。
标签: c# asp.net asp.net-mvc asp.net-core