当属性较多时,使用反射可以避免人工赋值导致的错误;
目录结构如下:
Program.cs:
using System;
namespace ReflectionTest
{
internal class Program
{
private static void Main(string[] args)
{
ClassA classA = new ClassA();
ClassA classTest = new ClassA();
classA.X = 12345633;
try
{
foreach (var dest in classTest.GetType().GetProperties())//获得类型的属性字段
{
foreach (var source in classA.GetType().GetProperties())
{
if (dest.Name == source.Name && dest.PropertyType == source.PropertyType && dest.Name != "Error" && dest.Name != "Item")//判断属性名是否相同
{
dest.SetValue(classTest, source.GetValue(classA, null), null);
}
}
}
}
catch (Exception ex)
{
}
Console.WriteLine(classTest.X);
Console.WriteLine(classTest.Y);
}
}
}
ClassA如下:
using System;
using System.Collections.Generic;
using System.Text;
namespace ReflectionTest
{
internal class ClassA
{
public ClassA()
{
X = 0;
Y = 1;
}
public int X
{
get; set;
}
public int Y
{
get; set;
}
}
}