在C#中调用基础构造函数
如果我从一个基类继承,并希望从继承类的构造函数传递给基类的构造函数,我该怎么做?
例如,
如果我从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
}
}
请注意,构造函数不是您可以在方法中随时调用的东西。 这就是你在构造函数体中调用错误的原因。
请注意,您可以在对基础构造函数的调用中使用静态方法。
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;
}
}
如果您需要调用基础构造函数,但不是马上开始,因为您的新派生类需要执行一些数据操作,最好的解决方案就是使用工厂方法。 你需要做的是标记私人你的派生构造函数,然后在你的类中做一个静态方法,将做所有必要的东西,然后调用构造函数并返回对象。
public class MyClass : BaseClass
{
private MyClass(string someString) : base(someString)
{
//your code goes in here
}
public static MyClass FactoryMethod(string someString)
{
//whatever you want to do with your string before passing it in
return new MyClass(someString);
}
}
链接地址: http://www.djcxy.com/p/6425.html