C#访问抽象类的字段
是否可以访问抽象类的字段和/或常量? 假设我有代码:C#访问抽象类的字段,c#,reflection,C#,Reflection,是否可以访问抽象类的字段和/或常量? 假设我有代码: public abstract class A { private int A; private int B; public const int months = 12; public int AProp { get{ return A; } set{ A = value; } } public abstract void DoSomething()
public abstract class A
{
private int A;
private int B;
public const int months = 12;
public int AProp
{
get{ return A; }
set{ A = value; }
}
public abstract void DoSomething();
}
是否可以通过反射检索字段和常量?如果是的话,你能建议怎么做吗?还有,还有更好的方法吗?如果您希望字段可以从
DoSomething
方法访问,但外部类看不到,最简单的选择是使字段受保护。这样,它们只能被子类访问,您几乎可以将protected
视为“抽象类的私有”
当然,区别在于,您可以从其他程序集中实现抽象类。为了避免这种情况,当您询问是否有比反射更好的方法时,您可以使类内部,这取决于您试图对抽象类执行的操作。“你能详细说明一下吗?”洛德塔克拉我的意思是说,如果有一种方法可以不使用反射来实现这一点。很抱歉措辞不恰当。@PBrenek如果您可以访问该变量,那么私有修饰符的作用是什么?如果派生类受到保护,您可以从派生类访问这些变量,如果派生类是公共的,则从外部访问这些变量(私有类当然更复杂)。所以,是的,你可以不经思考就做到。您希望如何访问它的一个用例将使我能够告诉您该场景是否有效。您是说从类的特定实例(在本例中是子类的实例)检索它们吗?或者你想做一些抽象的事情吗?