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