我们有两个类具有完全相同的公共访问器(和其中许多)但来自对象层次结构中不同区域的两个类;我们需要复制和比较这两个对象。我们可以手动编写一个拷贝构造函数和一个比较运算符来比较相同名称的访问器的值,但似乎好像有一种更好的方法来使用反射和LINQ来完成这个工作。干净的方法来比较/复制相似的类
例如:我们有ClassA,它有70个访问器;我们也有类ClassB,它具有70个访问器,它们被定义为与ClassA的访问器相同的名称和类型。
public class ClassA
{
int OneInt {get; set;}
int TwoInt {get; set;}
...
string OneString {get; set;}
string AnotherString {get; set;}
}
public class ClassB
{
int OneInt {get; set;}
int TwoInt {get; set;}
...
string OneString {get; set}
string AnotherString {get; set;}
}
我想什么是使用反射来发现所有的的ClassA公共访问器,并使用这些名称上ClassB的相应访问的值设置为访问者的价值的简单方法ClassA的。粗略地说,在伪代码:
foreach (string accName in ClassA.Accessors[])
BInstance.Accessors[accName].Value = AInstance.Accessors[accName].Value;
,当然,同样的事情可以用于两个类之间的测试平等。我对C#反射和LINQ的认识还不足以知道如何完成这个任务,但我发誓这是一个相对简单的事情。
我喜欢那个;这很清楚。我知道我和pcode在一起。 :) – 2010-11-10 18:36:10
用于小修改;效果很好! – 2010-11-11 00:55:24