我已经看到这个已经回答了,但它对我没用。我正在尝试从派生实例访问基类中的(非静态)类静态属性。
在基类中:
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;
由于
答案 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;