簡體   English   中英

從繼承的類更改基礎對象屬性的最佳實踐是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM