如何在派生类中访问私有集属性

时间:2015-01-23 16:11:27

标签: c# inheritance

我有一个简单的继承情况如下:

我希望能够从Class1设置Class2中的属性,但事实并非如此。有没有办法在类2中设置对属性的访问权限,使它们像受保护的变量一样?

public abstract class Class2
{
    public DateTime Added { get; private set; }
    public int ID { get; private set; }
}

public class Class1 : Class2
{
    public string ImageFilename { get; set; }
    public string LinkText { get; set; }
}

1 个答案:

答案 0 :(得分:2)

您需要将其设为protected,而不是private。这使您可以从派生类访问它,但不能从外部类访问它。

public abstract class Class2
{
    protected DateTime Added { get; set; }
    protected int ID { get; set; }
}

public class Class1 : Class2
{
    public string ImageFilename { get; set; }
    public string LinkText { get; set; }

    public Class1()
    {
        //You can set the variables from inside Class 1.
        base.Added = DateTime.Now();
        base.ID = 1;
    }
}

如果您希望属性仍然在外部公开,但是只读,您可以设置单个setter受保护:

public abstract class Class2
{
    public DateTime Added { get; protected set; }
    public int ID { get; protected set; }
}