在C#中调用基本构造函数
时间:2020-03-05 18:39:50 来源:igfitidea点击:
如果我从基类继承,并希望将某些东西从继承的类的构造函数传递给基类的构造函数,该怎么做?
例如,
如果我从Exception类继承,我想做这样的事情:
class MyExceptionClass : Exception { public MyExceptionClass(string message, string extraInfo) { //This is where it's all falling apart base(message); } }
基本上,我想要的是能够将字符串消息传递给基本Exception类。
解决方案
回答
将构造函数修改为以下代码,以便它正确调用基类的构造函数:
public class MyExceptionClass : Exception { public MyExceptionClass(string message, string extrainfo) : base(message) { //other stuff here } }
请注意,我们不能在方法中的任何时间调用构造函数。这就是在构造函数主体中调用时出错的原因。
回答
public class MyExceptionClass : Exception { public MyExceptionClass(string message, Exception innerException): base(message, innerException) { //other stuff here } }
我们可以将内部异常传递给构造函数之一。
回答
请注意,可以在对基本构造函数的调用中使用静态方法。
class MyExceptionClass : Exception { public MyExceptionClass(string message, string extraInfo) : base(ModifyMessage(message, extraInfo)) { } private static string ModifyMessage(string message, string extraInfo) { Trace.WriteLine("message was " + message); return message.ToLowerInvariant() + Environment.NewLine + extraInfo; } }