枚举值 return 空数组的 GetCustomAttributes

GetCustomAttributes for an enum value return an empty Array

我目前正在努力将 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
}

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

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

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

在 Windows 10 中有什么改变阻止了它的工作吗?

非常感谢!

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

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

希望对大家有所帮助!