我已经和C#一起工作多年了,但是刚刚遇到这个问题让我很烦恼,我真的甚至不知道如何提出问题,所以,举个例子吧!
public interface IAddress
{
string Address1 { get; set; }
string Address2 { get; set; }
string City { get; set; }
...
}
public class Home : IAddress
{
// IAddress members
}
public class Work : IAddress
{
// IAddress members
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我想将IAddress属性的值从一个类复制到另一个类.这可能是在一个简单的单行语句中还是我仍然需要对每个语句进行属性到属性的分配?我真的很惊讶这个看似简单的东西让我感到困惑......如果不可能以简洁的方式,有没有人有任何捷径他们用来做这种事情?
谢谢!
我用一个静态方法编写了一个类,它将属性值从一个对象复制到另一个对象.它并不关心每个对象的类型,只关心它们具有相同的属性.它做我需要的,所以我不是进一步设计它,但你会做出什么改进?
这是代码:
public class ShallowCopy
{
public static void Copy<From, To>(From from, To to)
where To : class
where From : class
{
Type toType = to.GetType();
foreach (var propertyInfo in from.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance))
{
toType.GetProperty(propertyInfo.Name).SetValue(to, propertyInfo.GetValue(from, null), null);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我使用它如下:
EmployeeDTO dto = GetEmployeeDTO();
Employee employee = new Employee();
ShallowCopy.Copy(dto, employee);
Run Code Online (Sandbox Code Playgroud)