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

时间:2015-05-26 19:34:41

标签: 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
}

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

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总是返回一个空数组,所以attributes.Length总是0,所以函数返回null;

Windows 10中有哪些更改会导致无法正常工作?

非常感谢!

1 个答案:

答案 0 :(得分:1)

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

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

希望它有所帮助!