6

W moim głównym projekcie PCL (WP8, Android, iOS, Xamarin, MvvmCross) używam atrybutów niestandardowych. Metoda rozszerzenia Type.GetCustomAttributes() pozwala mi sprawdzić użyte atrybuty.Przenośny profil biblioteki klas 78 brakujące metody/właściwości związane z atrybutem

To działa dobrze przy użyciu PCL Profile104. Ale ponieważ chcę użyć async/wait, będę musiał użyć profilu PCL Profile78 (i .NET 4.5)

Problem: Wygląda na to, że GetCustomAttributes() i właściwość Attributes nie są dostępne w Profile78. Czemu??

Uwaga: Rozważam obejście tego problemu, tworząc bibliotekę klas PCL Profile 104 i owijając GetCustomAttributes(), a następnie odwołując się do tej biblioteki z mojej biblioteki PCL Profile78. Jednak wydaje się extensionmethods nie są obsługiwane ...

Przykład Kod:

public Pcl78Class() 
{ 
    Type t = this.GetType(); 
    var attributes = t.Attributes; 
    var customAttributes = t.GetCustomAttributes(true); 

    // another weird thing: Why is VS CodeCompletion telling me it knows CustomAttributeExtensions class and methods? 
    //System.Reflection.CustomAttributeExtensions.GetCustomAttributes(t); 
} 

enter image description here

+0

To również występuje w Profile7 – benhorgen

Odpowiedz

13

Problem: Wydaje się, że GetCustomAttributes() i właściwości atrybuty nie są dostępne w Profile78. Czemu??

Profile78 includes support for Windows Store 8 (jak zaznaczono na moim blogu) i Windows Store has a more efficient implementation of Type-based reflection. Zasadniczo wystarczy zadzwonić pod numer Type.GetTypeInfo, aby uzyskać TypeInfo, a stamtąd powinno być całkiem proste.

+0

Hej, przełączyłem się na System.Reflection.GetTypeInfo - ale zawsze zwraca wartość null. Próbuję Profile49. Jakieś sugestie? – skimania

+0

@skimania: To inne pytanie niż to, więc powinieneś zamieścić to jako osobne pytanie. Wtedy więcej osób to zobaczy, a uzyskasz lepsze odpowiedzi. –