通过反射.NET获取静态属性



我已经看到了这个答案,但是对我没有帮助。我正在尝试从派生的实例访问基类(非静态)类静态属性。

在基类中:

Type type = this.GetType();
PropertyInfo propInf = type.GetProperty("DirectoryCode", BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy);

这里的propinf为null(类型是派生类类型)。

在派生类中:

public class DTGCSMissonParameters : ModelBase
{
   public static ushort DirectoryCode = (ushort) DIR.MISSION_PARAMETERS;

谢谢

as @jeroenvanlangen在注释中指定的,您定义了一个字段,而不是属性。正确的语句应为:

// C# 6.0
public static ushort DirectoryCode => (ushort) DIR.MISSION_PARAMETERS;
// Pre-C# 6.0
public static ushort DirectoryCode
{ 
     get { return (ushort) DIR.MISSION_PARAMETERS; }
}

@Edit:正如Jeppe Stig Nielsen在评论中指出的那样,每次访问财产时,都会对提出的第一个解决方案进行评估。为了避免这种情况,并简单地保留财产本身中的价值,请使用:

public static ushort DirectoryCode { get; } = (ushort) DIR.MISSION_PARAMETERS;

最新更新