如何将派生类属性传递给基类的构造函数

时间:2014-03-01 00:53:59

标签: c# inheritance

这是我的基类:

class baseClass
{
 string fileContents; 

 public baseClass(string filePath)
 {
  fileContents=getContents(filePath);
 }

}

我有一个派生类,文件路径总是相同的。理想情况下,我想传递该文件路径如下:

class derivedClass:baseClass
{
 string specialFilePath=@"x:\abc.def";

 public derivedClass():base(specialFilePath)
 {
 }
}

但是这给了我一个编译错误:

An object reference is required for the non-static field, method, or property 'derivedClass.specialFilePath'

如果我理解正确,就会发生这种情况,因为在baseClass有机会创建derivedClass之前,首先会调用specialFilePath构造函数。如何将此字符串传递回基类的构造函数?

3 个答案:

答案 0 :(得分:4)

使“specialFilePath”成为静态,这将起作用 - 在构造函数运行之前初始化静态成员。

class derivedClass:baseClass
{
    static string specialFilePath=@"x:\abc.def";

    public derivedClass():base(specialFilePath)
    {
    }
}

答案 1 :(得分:3)

如果你这样做,你甚至可能不需要一个字段。

class derivedClass : baseClass
{
    public derivedClass()
        : base(@"x:\abc.def")
    {
    }
}

答案 2 :(得分:2)

那是因为当您想要访问您的财产specialFilePath时,它尚未初始化。让它静止。