C#如何实现多继承,关键在于接口可以写方法的实现。多继承即一个子类可以有多个父类,它继承了多个父类的特性。

C # 怎样完成多承继,关键在于接口能够写办法的完成

浅谈C#怎么完成多承继(c#多继承怎么实现)  多继承 C# 第1张

  1. namespaceExtensions
  2. {
  3. usingSystem;
  4. usingExtensionMethodsDemo1;
  5. publicstaticclassExtension
  6. {
  7. //扩展接口
  8. publicstaticvoidMethodB(thisIMyInterfacemyInterface)
  9. {
  10. Console.WriteLine("Extension.MethodB(thisIMyInterfacemyInterface)");
  11. }
  12. }
  13. }
  14. namespaceExtensionMethodsDemo1
  15. {
  16. usingSystem;
  17. usingExtensions;
  18. publicinterfaceIMyInterface
  19. {
  20. voidMethodB();
  21. }
  22. classA:IMyInterface
  23. {
  24. publicvoidMethodB(){Console.WriteLine("A.MethodB()");}
  25. }
  26. classB:IMyInterface
  27. {
  28. publicvoidMethodB(){Console.WriteLine("B.MethodB()");}
  29. }
  30. classC:IMyInterface
  31. {
  32. publicvoidMethodB(){Console.WriteLine("C.MethodB()");}
  33. }
  34. classExtMethodDemo
  35. {
  36. staticvoidMain(string[]args)
  37. {
  38. Aa=newA();
  39. Bb=newB();
  40. Cc=newC();
  41. a.MethodB()
  42. b.MethodB()
  43. c.MethodB()
  44. }
  45. }
  46. }

故事篇:

找到这个办法的故事,,,,一日,闲来无事,来玩玩sp1新特性,entity framework.

生成实体类啦.

不过,这些实体类归于充血模型.

习惯了petshop式的贫血模型的我,一会儿想到,,,老子提取接口嘛,

然后,贫血模型诞生了.

作为两个模型的妈, IModelMother...是不是应该为儿子们做一些奉献呢.

想到了,两个实体类彼此仿制特点的办法 ....

  1. Code
  2. publicvoidCopyFrom(IModelMothermodel)
  3. {
  4. this.P1=model.P1;
  5. this.P2=model.P2;
  6. this.P3=model.P3;
  7. this.P4=model.P4;
  8. }

后来发现,,,这个办法,在两个实体类中都是相同的完成.

惋惜他们妈妈是接口......哎.....

所以给scottgu发了封邮件,大致上说:

老古呀,, .net怎样不能多重承继呢,这样,一个具有相同完成的办法,放哪呀?????

老古回信到,,,,oh,亲爱的,咱们真是英雄所见略同,

区别是,我TMD能够唆使一群高人为我处理这个问题.

为了处理这个问题,引入了扩展办法,这样你就能够经过承继接口来完成多承继啦.所以乎,产生了本文最上面的代码段

弥补:为什么他们妈妈不是类???由于EF的实体类有个爹(System.Data.Objects.DataClasses.EntityObject)

【修改引荐】

  1. C#中完成多承继的方法:混合+接口
  2. 多承继详解
  3. 浅谈C#基元类型及常见问题解答
  4. 使用C#指针进行图画操作
  5. C# 2010协变和逆变的新特性
转载请说明出处
知优网 » 浅谈C#怎么完成多承继(c#多继承怎么实现)

发表评论

您需要后才能发表评论