对于枚举值GetCustomAttributes返回一个空Array



我目前正在将windows 8.1通用应用程序升级到windows 10 UWP应用程序。有一部分代码在我的windows 10 UWP应用程序中工作得很好。

我有一个像这样的enum:

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。长度总是0,所以函数返回null;

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

非常感谢!

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

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

希望它能帮助到别人!

相关内容

  • 没有找到相关文章

最新更新