Альтернативы классам метаданных в Silverlight? - PullRequest
2 голосов
/ 19 мая 2011

Я пытаюсь отделить аннотации данных от наших POCO в рамках проекта Silverlight.Один из способов сделать это вне SL - использовать классы друзей, например:

[MetadataTypeAttribute(typeof(MyPOCO.POCOMetaData))]
public partial class MyPOCO
 {
     internal sealed class POCOMetaData
     {
         [Required(ErrorMessage="Requires name.")]
         public string Name { get; set; }
         [Required(ErrorMessage = "Requires age.")]
         public string Age { get; set; }
     }
 } 

Однако, начиная с Silverlight 4, атрибут MetadataType не существует в пространстве имен System.ComponentModel.DataAnnotations.Кто-нибудь нашел альтернативный способ отделения атрибутов DataAnnotation от POCO?Я изучаю это, поскольку планировал использовать шаблоны T4 для генерации наших основных классов POCO.

1 Ответ

1 голос
/ 19 мая 2011

Этот сценарий выглядит как-то странно, почему бы вам не захотеть украсить свои POCO самостоятельно?

1 - Если есть соответствующий сервер, рассмотрите возможность использования WCF RIA Services и объявите свойPOCO на стороне сервера, механизм RIA затем сгенерирует для вас все прокси на стороне клиента, включая все его аннотации и многие другие полезности.
2 - если нет соответствующего сервера и вы хотите манипулировать даннымина стороне клиента я бы выбрал WPF и имел бы более широкий спектр возможностей для разработки десктопов.
3 - К сожалению, TypeDescriptor также не реализован в Silverlight, поэтому вы даже не можете добавитьатрибуты динамически во время выполнения (на случай, если вы захотите сделать это грязными руками).

Поэтому я боюсь, что ваши шансы таковы:

  1. Прикрепите MD к частичным классам
  2. Украсьте свои POCO
  3. Используйте WCF-RIA и объявите POCO на стороне сервера
  4. Go WPF
  5. Пожалуйста, посмотрите на PEM .конструктор EDMX может быть расширен, возможно, конструктор классов может быть расширен (к сожалению, кажется, что не ).
  6. Предложить команду для SLэта функция будет реализована.
...