带有反射的成员未找到具有成员使用枚举的C#类

时间:2018-08-14 13:43:27

标签: c# reflection enums properties members

我们在MSTest项目中引用了一个项目,其中包括枚举。我们在成员/字段(例如GreetHeyHo)的一个测试类(例如IUseEnumsAsField)中使用这些枚举。 MSTest项目有几个类。如果我们以反射方式调用此MSTest项目,则只会得到不使用枚举作为成员的类。通过反射找到的类也使用引用项目中的枚举,但不作为成员,而仅用于测试方法本身。带有枚举成员的类IUseEnumsAsField我得到了一个例外,就是找不到包含枚举的项目dll。

我一起玩耍,发现如果我使用属性而不是成员,则可以通过反射找到该类。

这是示例代码:

<?php

echo Html::a('<span class="glyphicon glyphicon-floppy-disk"></span>  Save', ['simpan'], [
    'class' => 'btn btn-primary',
    'data' => [
        'method' => 'post'
    ]
]);
?>

其他项目,请使用反射:

[TestClass]
public class IUseEnumsAsField
{
    public GreetingsEnum GreetHeyHo = GreetingsEnum.HeyHo;
    public GreetingsEnum GreetHey = GreetingsEnum.Hey;

    public MyEnum ThisShirt = MyEnum.HasPinkShirts;

    //comment fields and uncomment property, this class is found
    //public GreetingsEnum GreetHeyHoProp
    //{
    //    get { return GreetingsEnum.HeyHo; }
    //}
}

有人知道吗,为什么我不能将引用项目中的枚举用作具有反射的成员?

谢谢,丹妮

编辑

在我的环境中,财产是指获取者/设置者,成员是例如公共/私有字段。在我的示例中,GreetHeyHoProp是一个属性(有效),而GreetHeyHo是一个公共字段(这是问题所在)。

编辑

我将一个示例项目推送到github: https://github.com/dani-mon/DidntFindMyClassAndMethods

0 个答案:

没有答案