将基类对象的值复制到继承类的对象

时间:2013-09-25 12:32:19

标签: asp.net-mvc oop c#-4.0

我有两个对象,例如A:B

我想在运行时将所有值从A复制到B

代码

Cow cow = db.Cows.Find(id);

CowDetailViewModel model = new CowDetailViewModel(); //  CowDetailViewModel : Cow

我想将值从cow变量复制到模型。 CowDetailViewModel中还有其他属性,我会在复制值后更改。

2 个答案:

答案 0 :(得分:1)

CowDetailViewModel model = new CowDetailViewModel()
{
     model.Property1 = cow.Property1,
     model.Property2 = cow.Property2
     ////
     ////
};

答案 1 :(得分:0)

您可以创建一个简单的扩展方法来复制所有公共属性

public static class CopyHelper
{
    public static void CopyFrom(this object target, object source)
    {
        foreach (var pS in source.GetType().GetProperties())
        {
            foreach (var pT in target.GetType().GetProperties())
            {
                if (pT.Name != pS.Name) continue;
                (pT.GetSetMethod()).Invoke(target, new[] {pS.GetGetMethod().Invoke(source, null)});
            }
        }
    }
}