【问题标题】:Constant in MemberInfo [duplicate]MemberInfo 中的常量 [重复]
【发布时间】:2014-09-05 13:21:22
【问题描述】:

我尝试在我的 Car 类中获取有关常量的信息,但不幸的是,结果我只得到了 4 个字段(名称、currentSpeed、maxSpeed、state)。如何获取字段常量。

谢谢。

public abstract class Car
{
    protected string name;
    protected short currentSpeed;
    protected short maxSpeed;
    protected EngineState state;

    protected const int const = 1;
 }

.................................................. .........

 Type type = assembly.GetType("CarLibrary.Car"); 

 MemberInfo[] members = type.GetMembers(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);

 foreach (MemberInfo element in members)
 Console.WriteLine("{0,-15}:  {1}", element.MemberType, element);

【问题讨论】:

    标签: c# constants memberinfo


    【解决方案1】:

    这应该给你常量,在你的查询中BindingFlags.Instance 正在消除静态,常量是static

    type.GetFields(BindingFlags.Static |
                   BindingFlags.FlattenHierarchy)
        .Where(fi => fi.IsLiteral && !fi.IsInitOnly).ToList();
    

    【讨论】:

    • 好的。我写道: MemberInfo[] members = type.GetMembers(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static);什么都没发生。我可以使用 MemberInfo 并获得一个常量吗?谢谢。
    • 不,这是因为FieldInfo : MemberInfo 如果你非常想在你的实现中使用MemberInfo,你可以这样做。 var res = typeof(Car).GetMembers(BindingFlags.Static | BindingFlags.FlattenHierarchy).Where(o => o.MemberType == MemberTypes.Field).Where(fi => (fi as FieldInfo).IsLiteral && !(fi as FieldInfo).IsInitOnly).ToList();
    猜你喜欢
    • 2011-05-12
    • 2015-10-20
    • 2010-09-12
    • 2013-04-04
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多