2015-12-30 37 views
1

我的项目(C#MVC)类继承一个基类,由于某种原因,我需要在基类具有参数创建构造像波纹管:如何解决建筑陷阱

Public class MyBase 
{ 
Public MyBase(string param1, string param2, string param3) 
{ 
} 
} 

Public class MyClass : MyBase 
{ 
} 

现在的问题是,每个派生类需要定义具有参数的基类构造函数。如果我没有在派生类中定义基类构造函数,那么显示错误“参数少构造函数” 在基类构造函数的每个类上编写代码是痛苦的,有没有什么办法避免这项工作

+0

自定义代码片段如何? –

+0

请检查我的答案。 –

回答

1

摆脱错误的唯一方法是添加参数少构造但是,显然这并不理想,因为您需要指定参数。

在Visual Studio 2015中,您可以单击该错误,然后单击“生成构造函数”,这使添加构造函数的过程变得更加容易。

看到这个answer背后有点解释。

您必须重新声明构造函数,因为它们实际上不是继承的。如果你认为构造函数在某些方面有点像静态方法,这是有道理的。

0

如果我对你有所了解,你想要一个从你拥有的基础派生的类,但你不想重载基构造器。这是您可能喜欢的一种解决方案。如果你隐藏你的课堂建设怎么办?

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(); 

至于结果,来电者不必担心使用构造函数。更重要的是,您现在可以完全更改派生类的构造

+0

T.S感谢您的回复,您的解决方案非常有趣。但我的要求是不同的,让我们描述我不想在我的派生类中做任何事情,没有任何接触或继承或任何魅力什么我不知道可以解决我的问题。希望你明白我的期望。我是超过100班,它是真的很痛苦,我要改变或在每一行上写一行。谢谢你的回复 – shamim