Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 设计模式,多重继承_C#_Oop_Design Patterns - Fatal编程技术网

C# 设计模式,多重继承

C# 设计模式,多重继承,c#,oop,design-patterns,C#,Oop,Design Patterns,这可能是c#basics 101,但我只是想,如果我不问,我永远不会知道,并且注定要编写结构糟糕的代码。。。(项目将在MVC中,因此我的控制器也需要从控制器类继承) 无论如何。我想这样构造我的代码 public class Global_Base_Class: System.Web.Mvc.Controller { } public class Production_Base : Global_Base_Class { GetPoducts, AddProduct... } public

这可能是c#basics 101,但我只是想,如果我不问,我永远不会知道,并且注定要编写结构糟糕的代码。。。(项目将在MVC中,因此我的控制器也需要从控制器类继承)

无论如何。我想这样构造我的代码

public class Global_Base_Class: System.Web.Mvc.Controller { }

public class Production_Base : Global_Base_Class { GetPoducts, AddProduct... } 

public class Risk_Base : Global_Base_Class { GetRisk, AddRisk...  }    

public class Example_View_Controller_A : Production_Base { }     

public class Example_View_Controller_B : Risk_Base { } 
如果我需要/想要(干涸我的代码)怎么办

我已经读到多重继承在c#中是不好的实践/不允许的

实现这一目标的最佳途径/最佳实践是什么


任何帮助/链接都将不胜感激

首先:不要这样命名你的课程。Microsoft编写了一套指导原则:

您的结构在任何OOP语言中都无效,因为关系不是
is-a
。控制器是MVC控制器,而不是具有业务逻辑的类。谷歌
更喜欢组合而不是继承
来了解更多

所以答案是


将通用功能移动到一个单独的类,该类包含在所有需要它的类中。(
RiskService
ProductionService

“不允许”,以及“更喜欢组合而不是继承”。是吗?谢谢!:)在我成为一个完整的n00b之前,我只是写下类名作为一个例子,通常不使用我的例子作为命名约定。。。再说一遍,我为什么要在互联网上为自己辩护:P。。无论如何,再次感谢你:D@Yenros:你以前如何命名你的类或如何构造它们都无关紧要。重要的是他们未来的样子。我们都来这里学习。我给人的印象也是个傻瓜,看看我所有的问题;)
public class Example_View_Controller_C : Production_Base, Risk_Base