如何解决建筑陷阱
本文关键字:建筑 陷阱 解决 何解决 | 更新日期: 2023-09-27 18:28:23
我的项目(C#mvc)类继承了一个基类,出于某种原因,我需要在具有以下参数的基类上创建构造函数:
Public class MyBase
{
Public MyBase(string param1, string param2, string param3)
{
}
}
Public class MyClass : MyBase
{
}
现在的问题是,在每个派生类上都需要定义带有参数的基类构造函数。如果我没有在派生类中定义基类构造函数,则显示错误"无参数构造函数"为基类构造函数在每个类上编写代码是很痛苦的,有什么方法可以避免这种工作
消除错误的唯一方法是添加一个无参数构造函数,但这显然不理想,因为您需要指定参数。
在Visual Studio 2015中,您可以单击错误并单击"生成构造函数",这使得添加构造函数的过程更加容易。
请参阅此答案,了解其背后的一些解释。
您必须重新声明构造函数,因为它们实际上不是继承的。如果您认为构造函数在某些方面有点像静态方法,那么这是有道理的。
如果我说得对,你想要一个从你的基派生的类,但你不想覆盖基构造函数。这里有一个你可能喜欢的解决方案。若你们隐藏了你们班的结构呢?
public class MyBase
{
public MyBase(string param1, string param2, string param3)
{
}
}
public class MyClass: MyBase
{
// notice - hide constructor - private
private MyClass(string p1, string p2, string p3) : base(p1, p2, p3)
{
}
public static MyClass Create()
{
return new MyClass(null, null, null);
}
}
使用
var c = MyClass.Create();
因此,您的调用者不必担心使用构造函数。此外,您现在可以完全更改派生类的构造