Obecnie pracuję nad uaktualnieniem uniwersalnej aplikacji systemu Windows 8.1 do aplikacji Windows 10 UWP. Jest pewna część kodu, która działała doskonale, zanim to nie zadziała w mojej aplikacji Windows 10 UWP.GetCustomAttributes dla wartości wyliczeniowej zwraca pusty Array
Mam enum, który wygląda tak:
public enum EStaticFile
{
[StringValue("Path of a file")]
CONFIG_FILE_1,
[StringValue("Path of a file")]
CONFIG_FILE_2
}
Kiedy próbuję uzyskać atrybut dla każdej z wartości enum, to zawsze zwraca pustą tablicę. Używać następujący kod:
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 zawsze zwraca pustą tablicę, tak attributes.Length zawsze wynosi 0, więc zwraca zerowa;
Czy w systemie Windows 10 zostało coś, co uniemożliwiło to działanie?
Wielkie dzięki!
Nie mogę [odtworzyć tego] (https://dotnetfiddle.net/FqUO3i). Być może jest to inna niezgodność, taka jak błędne nazwanie przestrzeni nazw lub inna wersja platformy .NET? – ryanyuyu
tak, prawdopodobnie dlatego, że .NetFiddle nie jest pod Windows 10 i jest aplikacją konsolową, a nie aplikacją UWP ... Pracował przed Ugraded z Windows 8.1 :( – mgarant
Nie mogę powtórzyć to albo. – Amy