0

我有一个具有以下属性的业务对象:

Public class Person
{
  prop int ID {get; set;}
  prop string Name {get; set;}
  prop string Address1 {get; set;}
  prop string Address2 {get; set;}
}

有这个方法

Public Void CreateEntity(Person objPerson)
{
 Person newPerson = new Person();
 newPerson.Name = objPerson.Name;
 newPerson.ID = objPerson.ID;
 newPerson.Address1 = objPerson.Address1;
 newPerson.Address2 = objPerson.Address2;

  ...

  // Do some stuff
 }

它基本上将 objPerson 的所有属性分配给 newPerson。

有没有办法将选择性属性分配给 newPerson?

不做一对一,能不能像只做一样有选择性地做

 newPerson.Address1 = objPerson.Address1;
 newPerson.Address2 = objPerson.Address2;

在方法中。

我可以有一个可以定义所需属性的外部配置。因此,如果该配置只有 Address1 和 Address2,则 newPerson 只会分配这两个。

这可以做到吗?

问候。

4

3 回答 3

1

如果我正确理解了您想要的内容,则可以使用Object Initializers

var person = new Person{ ID = 123456, Name = "Foo"};

对象和集合初始化器(C# 编程指南)

于 2013-02-05T08:55:37.493 回答
0

使用对象初始化器:

var obj = new Person { ID = 1, Name = "Test" };
于 2013-02-05T08:56:21.650 回答
0

为您的每个公共属性添加私有字段并在您的公共属性中使用此字段,而不是直接使用get; set;.

然后将您的条件写入设置器,并且只有在满足条件时才更改私有相关的私有字段。

private int id;

public int ID {
get
{
    return id;
} 
set
{
    if(someCondition)
       id = value;
} 

}

于 2013-02-05T08:57:02.903 回答