![]() |
1
2
嗯,我有一个 真的很可怕 你能做到的方式。 你可以编写一个方法,使用反射(请耐心听我说!)来计算特定类型的所有属性,并构建一个委托(使用reflection.Emit)将属性从该类型复制到另一个类型。然后使用匿名类型来确保您只需要构建一次复制委托,因此速度很快。你的方法看起来像这样:
这里的细微差别:
我不确定这是否真的值得,但这是一个很有趣的想法。..我可能无论如何都要实现它:) 编辑:与 MemberInitExpression 我们可以用表达式树来完成这一切,这比CodeDOM容易得多。今晚我会试试。.. 编辑:完成了,这实际上是一段非常简单的代码。这是课堂:
并称之为:
|
![]() |
2
1
如果
|
![]() |
3
0
重复出现在名称中,但C#不知道一个类中的PropertyA与另一个类的PropertyA相连。你必须明确地建立连接。你做这件事的方式很好。如果你已经受够了这些,你可能会考虑使用反射来编写一个方法,可以为任何一对类做到这一点。 一定要注意你选择的任何方法对性能的影响。反思本身速度较慢。然而,您也可以使用反射来发射IL,一旦发射,其运行速度将与您所写的一样快。您还可以生成表达式树并将其转换为已编译的委托。这些技术有点复杂,所以你必须权衡取舍。 |
![]() |
4
0
你可以让调用者返回他们自己的匿名类型的对象,只包含他们需要的属性:
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 6 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 6 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 6 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 7 月前 |