ASP.net用法系列:如何從基類調用LINQ/EF類的屬性

來源:互聯網
上載者:User

如果有各種動物,比如Dogs/Cats/Cows/...,都有不同的Age方法,若想從其基類用相同的方法ShowAge來顯示這些不同的Age,自然就可以借用基類Animal的virtual函數,比如:
public class Animal{    public virtual Age    {        get {....}        set {....}    }    public ShowAge()    {        Show(Age);    }}public class Dog : Animal{    public override Age    {        get {...}        set {...}    }}public class Cat : Animal{    public override Age    {        get {...}        set {...}    }

override是個關鍵,因為如果沒有override,則animal會調用自己的Age。如果Dog和Cat是一個LINQ/EF自動產生的類,則沒有override這個關鍵詞,這種情況就會發生。

當然不能每次到LINQ/EF產生的程式碼裡邊手工加上, 怎麼辦呢?

上次遇到這個問題,搜尋而不得,測試了半天找到一個方法,今天再次用上,看來不算少見發帖共用。

在Animal裡邊,使用這些代碼:

    public virtual int Age    {          get         {             PropertyInfo pi = this.GetType().GetProperty("Age");             int age = (int)pi.GetValue(this, new object[] {});             return age;         }         set         {             PropertyInfo pi = this.GetType().GetProperty("Age");             pi.SetValue(this, value, new object[] { });         }     } 

這種方法其實和“繼承”沒什麼大關係,純粹是直接讀取了資料庫表中的屬性,可以應急。

 

點擊下載免費的敏捷開發教材:《火星人敏捷開發手冊》

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.