如何在派生 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; }
}
我有一个简单的继承情况如下:
我希望能够从 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; }
}