[英]what is the best practice of changing base object properties from inherited class
我想將student1的“person”屬性設置為person1。 這可以通過分配或任何方式逐個設置屬性來實現嗎?
static void Main(string[] args)
{
var student1 = new Student {Id = 1, Name = "kaya", Class = "3b", Number = "156"};
var person1 = new Person { Id = 2, Name = "hasan" };
}
public class Person
{
public int Id { get; set; }
public String Name { get; set; }
}
public class Student : Person
{
public int Number { get; set; }
public String Class { get; set; }
}
那么你可以用反射來做 - 但我個人不會。 您可以在Person
添加CopyTo
方法:
public class Person
{
public int Id { get; set; }
public String Name { get; set; }
public void CopyTo(Person other)
{
other.Id = Id;
other.Name = Name;
}
}
另一個選擇是使用組合而不是繼承,這樣Student
有一個Person
屬性而不是派生自Person
。 這實際上取決於更大的圖景 - 你真的希望Student
成為一個專門的Person
,還是只是一種簡單的方法來獲取數據?
這種問題經常出現,但我很少發現自己想在我自己的代碼中做到這一點......我有興趣看到需要這個代碼的設計,弄清楚我是如何設計的相反。 我不清楚這是不是我不做那種鼓勵這種模式的工作,或者我是否使用替代設計來解決同樣的問題。
你看過AutoMapper了嗎? 如果你使用了一半的正常約定,你最終寫的幾乎為零代碼 -
http://automapper.codeplex.com/
我最近使用AutoMapper將我的POCO映射到Subsonic。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.