2015-05-26 29 views
5

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!

+0

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

+0

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

+0

Nie mogę powtórzyć to albo. – Amy

Odpowiedz

1

W końcu znalazłem rozwiązanie mojego problemu.

Moje rozwiązanie zawiera projekty C++, więc aktywowałem język .Net Native, jak to było powiedziane w każdym tutorialu jaki widziałem o migracji aplikacji Windows 8.1 do aplikacji Windows 10 UWP, co jest ok, ale czyni to ustawia własność UseDotNetNativeToolChain na true, co powoduje problem. Aby rozwiązać problem, po prostu ustaw go na false w każdym błędnym pliku projektu i zacznie działać ponownie! Ponadto .Net Native nadal działa!

Mam nadzieję, że komuś pomaga!