我正在尝试从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类。
答案 0 :(得分:1)
这种情况看起来有点奇怪,为什么你不想自己装饰你的POCO?
1 - 如果有匹配的服务器,考虑使用WCF RIA Services并在服务器端声明您的POCO,RIA引擎将为您生成客户端的所有代理,包括其所有注释,以及许多其他好东西
2 - 如果没有匹配的服务器并且您想在客户端操作数据,那么我会选择WPF并具有更广泛的桌面开发功能。
3 - 不幸的是,TypeDescriptor
也没有在Silverlight中实现,所以你甚至无法在运行时动态添加属性(如果你想要那么脏的话)。
所以我很害怕你的机会是: