6

В моем основном проекте PCL (WP8, Android, iOS, Xamarin, MvvmCross) Я использую пользовательские атрибуты. Метод расширения Type.GetCustomAttributes() позволяет мне изучить используемые атрибуты.Portable Class Library Profile 78 Отсутствующие атрибуты связанные свойства/свойства

Использование PCL Profile104 хорошо работает. Но поскольку я хочу использовать async/await, мне нужно будет использовать PCL Profile78 (и .NET 4.5)

Проблема: Кажется, GetCustomAttributes() и свойство Attributes недоступны в Profile78. Зачем??

Примечание: Я изучаю обходной путь, создавая библиотеку классов профиля PCL Profile 104 и обертывая GetCustomAttributes(), а затем ссылаясь на эту библиотеку из библиотеки PCL Profile78. Однако, кажется, extensionmethods не поддерживаются ...

Пример кода:

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

Это также встречается в Profile7 – benhorgen

ответ

13

Проблема: кажется GetCustomAttributes() и свойство Attributes не доступны в Profile78. Зачем??

Profile78 includes support for Windows Store 8 (как указано в моем блоге) и Windows Store has a more efficient implementation of Type-based reflection. По сути, вам просто нужно позвонить Type.GetTypeInfo, чтобы получить TypeInfo, и оттуда он должен быть довольно простым.

+0

Эй, я переключился на System.Reflection.GetTypeInfo - но он всегда возвращает null. Я пытаюсь Profile49. Какие-либо предложения? – skimania

+0

@skimania: Это другой вопрос, чем этот, поэтому вы должны опубликовать его как отдельный вопрос. Тогда больше людей это увидит, и вы получите лучшие ответы. –

Смежные вопросы