![]() |
1
2
据我所知,解决方案分为两部分,这两部分应该相互独立地工作。 A部分:对象转换的通用模式 创建一个接口,由需要从外部DTO调整的所有模型实现。
这个接口只需要一个
现在为每个要从另一种类型进行调整的模型构建一个类。
TypeAdapter类:
注1
:的
注2
:我选择将
添加这个类也将扩展解决方案以包含这个转换。 当然,如果它更适合您的应用程序,您可以选择自己的方式。 B部分:服务电话 据我所知,应用程序没有办法提取目标类型,只给定源类型。你必须在服务电话中提供。你对你的服务电话没有描述,所以我给你一些提示。 如果您的服务电话是这样的,它将工作:
如果无法在服务调用中传递T类型,则可以使用If子句正确定义目标类型:
|
![]() |
2
1
你有两个选择, 一。通过反射生成模型和Dto的属性列表。然后匹配他们的类型。
2.使用 Automapper |
![]() |
3
1
因为您正在实现一个泛型方法,所以您需要实现一个泛型方法来将S转换为T(参见其他答案),或者您需要传入转换函数。
下面是调用上述方法的示例代码。
|
![]() |
4
0
谢谢你们的回答,他们帮助我朝着正确的方向前进。 我在运行时使用反射来解决正确的自适应方法。 多亏了你,我学到了一些思考的东西。 我正在分享解决方案,希望我也能有所回报。 这就是我的结局。
|
|
user5315444 · C#,通用,访问属性 7 年前 |
![]() |
Tomilov Anatoliy · 按T匹配nullptr* 9 年前 |
![]() |
Spiros · 命名空间作为CUDA中的模板参数 9 年前 |
![]() |
AhSeng Fan · C泛型错误-“_Bool”之前应为表达式 9 年前 |
![]() |
Sss · c#中泛型类型<T>出现未处理的异常,因为文件大小不是字节的倍数 10 年前 |