6

In meinem PCL-Kernprojekt (WP8, Android, iOS, Xamarin, MvvmCross) verwende ich benutzerdefinierte Attribute. Die Erweiterungsmethode Type.GetCustomAttributes() ermöglicht es mir, die verwendeten Attribute zu untersuchen.Tragbares Klassenbibliotheksprofil 78 fehlende attributbezogene Methoden/Eigenschaften

Mit PCL Profile104 funktioniert das gut. Aber da ich async/await verwenden möchte, muss ich PCL Profile78 (und .NET 4.5) verwenden.

Problem: Scheint, dass die Eigenschaften GetCustomAttributes() und Attributes in Profile78 nicht verfügbar sind. Warum??

Hinweis: Ich bin in der Problemumgehung durch Erstellen einer PCL-Profil 104-Klassenbibliothek und das Umschließen der GetCustomAttributes() und dann Referenzieren dieser Bibliothek aus meiner PCL-Profil78-Bibliothek. Allerdings scheint es, Extension werden nicht unterstützt ...

Beispielcode:

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

Dies tritt auch in Profile7 auf – benhorgen

Antwort

13

Problem: die GetCustomAttributes Scheint() und die Eigenschaft Attribute sind nicht in Profile78. Warum??

Profile78 includes support for Windows Store 8 (wie auf meinem Blog vermerkt) und Windows Store has a more efficient implementation of Type-based reflection. Im Wesentlichen müssen Sie nur Type.GetTypeInfo anrufen, um eine TypeInfo zu erhalten, und von dort sollte es ziemlich direkt sein.

+0

Hey, ich wechselte zu System.Reflection.GetTypeInfo - aber es gibt immer Null zurück. Ich versuche Profile49. Irgendwelche Vorschläge? – skimania

+0

@skimania: Das ist eine andere Frage als diese, also sollten Sie es als separate Frage veröffentlichen. Dann werden mehr Leute es sehen und Sie werden bessere Antworten bekommen. –