当前位置:编程学习 > C#/ASP.NET >>

如何把一个模型快速的赋值给另一个模型

现在程序里定义了两个模型,如下:

public class User
{
      public string Name{ get; set;}
      public int Age {get; set;}
      public string Address {get; set;}
}

public class UserDetail
{
      public string Name{ get; set;}
      public int Age { get; set;}
      public string Address {get; set;}
      public string OtherInfo {get; set;}
}

public class User....
{
      包含User的共有属性和其他属性
}

两个模型类的是大的模型包含小的模型的所有属性,我现在想定义一个方法,传入一个Datarow,一个类型名返回相应的Model。如:

public object GetUserModel(string type,DataRow dr)
{
      Model.User user = new Model.User();
      user.Name = dr["name"];
      user.Age = dr["age"];
      user.Address = dr["address"];

      if(type = 'User')
      {
          return user;
      }
      else if(type='UserDetail')
      {
          Model.UserDetail detail = new UserDetail();
          detail.Name = user.Name;
          detail.Age = user.Age;
          detail.Address = user.Address;
          return detail
      }
      else if(type = '....')
      {
                 ..............
      }
}


现在我的问题就是,如何快速的把User类的全部属性赋值给UserDetail类和其他包含User类公共属性的类,而不是每次都要一个属性一个属性的赋值。

--------------------编程问答-------------------- public class UserDetail
{
      public User user;
      public string OtherInfo {get; set;}
}

--------------------编程问答-------------------- public class BaseUser
{
      public string Name{ get; set;}
      public int Age {get; set;}
      public string Address {get; set;}
}
建个基类,User和UserDetail继承BaseUser,试试 --------------------编程问答-------------------- 有个东西,叫继承。

有本书,叫《面向对象》 --------------------编程问答-------------------- linq to entity --------------------编程问答-------------------- 方法1:序列化,再反序。
方法2:反射挨个赋值。
方法3:动态生成代码。 --------------------编程问答-------------------- TechED2011上微软mvp说
使用一些Mapping工具,做双向映射填充
AutoMapper
EmitMapper
自定义的ORM - GenerPoint.ORM

没用过 --------------------编程问答--------------------
引用 3 楼 yuwenge 的回复:
有个东西,叫继承。

有本书,叫《面向对象》


我用的是LINQ --------------------编程问答--------------------
引用 2 楼 wquanchao 的回复:
public class BaseUser
{
      public string Name{ get; set;}
      public int Age {get; set;}
      public string Address {get; set;}
}
建个基类,User和UserDetail继承BaseUser,试试


是ORM自动生成的类,不是手写的。 --------------------编程问答--------------------
引用 4 楼 ruanwei1987 的回复:
linq to entity


没有了解过,能否说的详细一点。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,