2013-02-05 5 views
0

j'ai un objet d'affaires avec ces propriétés:Définition des propriétés d'objet sélectivement

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

Il y a cette méthode

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 
} 

Il attribue essentiellement toutes les propriétés de objPerson à newPerson.

Existe-t-il un moyen d'affecter des propriétés sélectives à newPerson?

Au lieu de faire un à un, peut-il être fait de manière sélective comme faisant seulement

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

dans la méthode.

Je peux avoir une configuration externe où les propriétés requises peuvent être définies. Donc, si cette configuration n'a que Address1 et Address2, newPerson ne reçoit que les deux assignés.

Est-ce que cela peut être fait?

Cordialement.

Répondre

1

Si je comprends bien ce que vous voulez bien, vous pouvez utiliser objet Initialiseur:

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

Object and Collection Initializers (C# Programming Guide)

+0

Comment puis-je faire générique? Si les propriétés à définir peuvent être configurées, puis ne définissez que ces propriétés? – Codehelp

+0

@Codehelp, j'ai du mal à comprendre ce que vous demandez exactement ... – gdoron

+0

J'ai modifié la question pour inclure un scénario. Merci pour votre temps et appréciez votre aide. – Codehelp

0

Avec l'initialiseur d'objet:

var obj = new Person { ID = 1, Name = "Test" }; 
0

Ajouter des champs privés pour chacun vos propriétés publiques et utilisez ces champs dans vos propriétés publiques, au lieu d'utiliser directement get; set;. Puis, écrivez vos conditions dans les setters, et seulement si les conditions sont remplies changez le champ privé privé.

private int id; 

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

}

Questions connexes