Silverlight中元数据伙伴类的替代方案?

时间:2011-05-19 13:01:37

标签: silverlight-4.0 data-annotations

我正在尝试从Silverlight项目中的POCO中分离DataAnnotations。在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开始,System.ComponentModel.DataAnnotations命名空间中不存在MetadataType属性。有没有人找到一种从POCO中分离DataAnnotation属性的替代方法?我正在调查这个,因为我计划使用T4模板来生成我们的基本POCO类。

1 个答案:

答案 0 :(得分:1)

这种情况看起来有点奇怪,为什么你不想自己装饰你的POCO?

1 - 如果有匹配的服务器,考虑使用WCF RIA Services并在服务器端声明您的POCO,RIA引擎将为您生成客户端的所有代理,包括其所有注释,以及许多其他好东西 2 - 如果没有匹配的服务器并且您想在客户端操作数据,那么我会选择WPF并具有更广泛的桌面开发功能。
3 - 不幸的是,TypeDescriptor也没有在Silverlight中实现,所以你甚至无法在运行时动态添加属性(如果你想要那么脏的话)。

所以我很害怕你的机会是:

  1. 将MD附加到部分类
  2. 装饰您的POCO
  3. 使用WCF-RIA并在服务器端声明POCO
  4. 去WPF
  5. 请查看PEM。 EDMX设计师可以扩展,也许类设计师也可以扩展(哎呀,不幸的是它似乎isn't)。
  6. Suggest致SL团队实施此功能。