我目前正在将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仍然可以工作!
希望它能帮助到别人!