1
91
加上一个通用版本很漂亮,但不必要,因为所有项目都是对象。
代码:
用法:
因为我很无聊,一条评论建议使用linq版本
|
2
78
我有打字
它不要求类型相同——它只是将所有可读属性从“源”类型复制到“目标”类型。当然,如果类型相同,则更可能有效:)顺便说一句,这是一个浅拷贝。
在这个答案底部的代码块中,我扩展了这个类的功能。要从一个实例复制到另一个实例,它使用简单的
(在哪里
我还没有准备好发布一个完整的MiscUtil版本,但这里有更新的代码,包括注释。我不打算为SO编辑器重写它们——只需复制整个块。 (如果我从零开始,我可能还会在命名方面重新设计API,但我不想破坏现有用户…)
|
3
39
这是一个简短而甜蜜的版本,因为你说你的两个对象是同一类型的:
|
4
26
基于Steve的方法,我采用了扩展方法。 它使用我的基类作为类型,但即使使用object作为参数类型也应该可用。 对我来说很有用。
现在,Item2与item1具有相同的属性数据。 |
5
9
|
6
8
这个简短的扩展方法允许您通过检查Null值将匹配属性从一个对象复制到另一个对象,并且是可写的。
|
7
5
基本上在2019年,我们应该使用更多最新的语言功能,比如表达式树和编译的lambda表达式,而不是反射
由于我无法找到一个“浅克隆器”来满足我的要求(最重要的是速度),我决定自己创建一个。它枚举所有可获取/可设置的属性,然后创建
|
8
3
可以使用序列化深度克隆对象:
当然,类必须标记为可序列化。 |
9
3
好几年来,我一直在使用一个流行的图书馆 估价师 努吉: https://www.nuget.org/packages/ValueInjecter/ github: https://github.com/omuleanu/ValueInjecter
请注意,即使基本解决方案非常简单(请参阅其他答案),也存在大量的边缘情况(例如深度复制、泛型、空值)和优化(例如缓存反射的属性),因此最好使用维护库来实现这一点。 |
10
2
|
11
1
|
12
1
我使用这个AutomaFactory方法(只需要LinQ),它在属性中只迭代一次,每个对象的映射速度很快(100000道具/秒)
如何使用:
|
13
0
若您想要像ApplyProperty这样的东西,您可以在对象上编写一个扩展方法,该方法可以满足您的需要。只要意识到这样的扩展方法不是“纯粹的”,也不是没有副作用的。但是如果你需要这种能力,这是一种实现它的方法。 |
14
0
扩展@Azerothians answer,我需要一些额外的要求:
|
15
0
我已经采纳了@Shimmy Weitzhandler上面写的所有内容,并进行了轻微修改。由于我在必须定义具有相同属性的多个对象时使用了此方法,因此我创建了一个接受可变数量元素的函数:
例如。:
或
我将其设置为静态,因为它位于助手库中 |
16
-3
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |