枚举值的GetCustomAttributes返回一个空数组

mga*_*ant 5 c# enums custom-attributes win-universal-app windows-10

我正在努力将Windows 8.1通用应用程序升级到Windows 10 UWP应用程序.在我的Windows 10 UWP应用程序中,有一部分代码在之前完全无法正常工作.

我有一个看起来像这样的枚举:

public enum EStaticFile
{
    [StringValue("Path of a file")]
    CONFIG_FILE_1,    

    [StringValue("Path of a file")]
    CONFIG_FILE_2
}
Run Code Online (Sandbox Code Playgroud)

当我尝试获取任何枚举值的属性时,它总是返回一个空数组.我使用以下代码:

public static StringValue GetStringValueAttribute(this Enum aEnumValue)
{
    Type type = aEnumValue.GetType();

    FieldInfo fieldInfo = type.GetRuntimeField(aEnumValue.ToString());
    StringValue[] attributes = fieldInfo.GetCustomAttributes(typeof(StringValue), false) as StringValue[];
    if (attributes.Length > 0)
    {
        return attributes[0];
    }

   return null;
}
Run Code Online (Sandbox Code Playgroud)

GetCustomAttributes总是返回一个空数组,所以attributes.Length总是0,所以函数返回null;

在Windows 10中有什么变化阻止它工作?

非常感谢!

mga*_*ant 1

我终于找到了解决我的问题的方法。

我的解决方案包含 C++ 项目,因此我激活了 .Net Native,就像我看到的有关将 Windows 8.1 应用程序迁移到 Windows 10 UWP 应用程序的每个教程中所说的那样,这没问题,但这样做会将属性 UseDotNetNativeToolChain 设置为 true,这会导致问题。要解决该问题,只需将有问题的项目文件中的所有位置设置为 false,它将再次开始工作!而且 .Net Native 仍然有效!

希望它能帮助别人!