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

时间:2016-06-27 11:42:53

标签: c# .net reflection

我已经看到这个已经回答了,但它对我没用。我正在尝试从派生实例访问基类中的(非静态)类静态属性。

在基类中:

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

这里propInf为null(type是派生类类型)。

在派生类中:

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

由于

1 个答案:

答案 0 :(得分:3)

作为评论中指定的@JeroenVanLangen,您定义了一个Field而不是一个Property。正确的陈述应该是:

// 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;