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

How to access private set properties in derived class

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

我希望能够从 Class1 设置 Class2 中的属性,但事实并非如此。有没有办法设置对 Class 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; }
}

您需要将它们设置为 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;
    }
}

如果您希望属性仍然向外部公开,但只读,您可以改为将各个设置器设置为受保护:

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