在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

上一篇: Calling the base constructor in C#

下一篇: When should weak references be used?