自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談C#如何實(shí)現(xiàn)多繼承

開發(fā) 后端
C#如何實(shí)現(xiàn)多繼承,關(guān)鍵在于接口可以寫方法的實(shí)現(xiàn)。多繼承即一個(gè)子類可以有多個(gè)父類,它繼承了多個(gè)父類的特性。

C # 如何實(shí)現(xiàn)多繼承,關(guān)鍵在于接口可以寫方法的實(shí)現(xiàn)

  1. namespace Extensions  
  2. {  
  3.   using System;  
  4.   using ExtensionMethodsDemo1;  
  5.  
  6.  
  7.      public static class Extension  
  8.      {  
  9. //擴(kuò)展接口  
  10.         public static void MethodB(this IMyInterface myInterface)   
  11.         {  
  12.             Console.WriteLine("Extension.MethodB(this IMyInterface myInterface)");  
  13.         }  
  14.     }  
  15. }  
  16. namespace ExtensionMethodsDemo1  
  17. {  
  18.     using System;  
  19.     using Extensions;  
  20.  
  21.     public interface IMyInterface  
  22.     {  
  23.         void MethodB();  
  24.     }  
  25.  
  26.     class A : IMyInterface   
  27.     {  
  28.         public void MethodB(){Console.WriteLine("A.MethodB()");}  
  29.     }   
  30.  
  31.     class B : IMyInterface  
  32.     {  
  33.         public void MethodB() { Console.WriteLine("B.MethodB()"); }  
  34.  
  35.     }  
  36.  
  37.     class C : IMyInterface  
  38.     {  
  39.         public void MethodB() { Console.WriteLine("C.MethodB()"); }  
  40.  
  41.     }  
  42.  
  43.     class ExtMethodDemo  
  44.     {  
  45.         static void Main(string[] args)  
  46.         {  
  47.             A a = new A();  
  48.             B b = new B();  
  49.             C c = new C();  
  50.  
  51.             a.MethodB()  
  52.             b.MethodB()  
  53.             c.MethodB()  
  54.  
  55.  
  56.  
  57.         }  
  58.      }  

故事篇:

找到這個(gè)辦法的故事,,,,一日,閑來(lái)無(wú)事,來(lái)玩玩sp1新特性,entity framework.

生成實(shí)體類啦.

不過,這些實(shí)體類屬于充血模型.

習(xí)慣了petshop式的貧血模型的我,一下子想到,,,老子提取接口嘛,

然后,貧血模型誕生了.

作為兩個(gè)模型的媽, IModelMother...是不是應(yīng)該為兒子們做一些貢獻(xiàn)呢.

想到了,兩個(gè)實(shí)體類相互復(fù)制屬性的方法 .... 

  1. Code  
  2.        public void CopyFrom(IModelMother model)  
  3.  
  4.        {  
  5.            this.P1 = model.P1;  
  6.            this.P2 = model.P2;  
  7.            this.P3 = model.P3;  
  8.            this.P4 = model.P4;  
  9.  
  10.  
  11.        } 

后來(lái)發(fā)現(xiàn),,,這個(gè)方法,在兩個(gè)實(shí)體類中都是相同的實(shí)現(xiàn).

可惜他們媽媽是接口......哎.....

于是給scottgu發(fā)了封郵件,大致上說(shuō):

老古呀,,  .net怎么不能多重繼承呢,這樣,一個(gè)具有相同實(shí)現(xiàn)的方法,放哪呀?????

老古回信到,,,,oh,親愛的,我們真是英雄所見略同,

 區(qū)別是,我TMD可以驅(qū)使一群高人為我解決這個(gè)問題.

為了解決這個(gè)問題,引入了擴(kuò)展方法,這樣你就可以通過繼承接口來(lái)實(shí)現(xiàn)多繼承啦.于是乎,產(chǎn)生了本文最上面的代碼段

補(bǔ)充:為什么他們媽媽不是類???因?yàn)镋F的實(shí)體類有個(gè)爹(System.Data.Objects.DataClasses.EntityObject)

【編輯推薦】

  1. C#中實(shí)現(xiàn)多繼承的方式:混合+接口
  2. 多繼承詳解
  3. 淺談C#基元類型及常見問題解答
  4. 利用C#指針進(jìn)行圖像操作
  5. C# 2010協(xié)變和逆變的新特性
責(zé)任編輯:彭凡 來(lái)源: cnblogs
相關(guān)推薦

2009-05-13 11:50:17

C#多繼承接口

2009-09-04 17:34:11

C#CC++

2009-09-01 18:29:10

C#繼承C#多態(tài)

2009-08-13 18:15:06

C#繼承構(gòu)造函數(shù)

2009-08-17 17:16:19

C#實(shí)現(xiàn)在線升級(jí)

2009-08-19 15:08:30

C#泛型

2009-08-20 18:30:33

C# ReaderWr

2011-09-21 10:56:31

C#結(jié)構(gòu)

2009-09-07 05:24:22

C#窗體繼承

2009-08-13 18:36:36

C#繼承構(gòu)造函數(shù)

2009-08-24 10:31:37

C#接口繼承

2009-07-22 17:15:04

C#實(shí)現(xiàn)

2011-03-29 09:14:49

Dispose模式C#

2009-07-30 18:20:21

C#繼承

2009-08-07 11:26:53

C#數(shù)組結(jié)構(gòu)

2009-08-12 11:24:25

C# String對(duì)象

2009-08-19 17:12:18

C# Connecti

2009-08-31 09:37:09

C# Employee

2009-08-25 16:16:43

C# oledbcon

2009-08-26 15:46:01

C#匿名類型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)