我想问一下我对可移植类库的疑问。我正在开发一个DAL层,我正在为我的业务对象使用Portable项目,该项目的目标是.Net Framework 4.03及更高版本,SilverLight 4
及更高版本和.Net for Windows Store应用程序。
我想在每个业务对象上实现IValidatableObject
接口,但即使System.ComponentModel.DataAnnotations
可用于此项目所针对的框架,我也无法访问{{1} } .net可在.net可移植框架上使用,不存在IValidatableObject
属性。有没有解决方案来实现这种方法?
答案 0 :(得分:6)
对此可能没有一个简单的解决方案。您可以在具有相同功能的可移植类库中创建自己的接口。但是,这将是一个不同的接口,因此使用DataAnnotations(我认为是ASP.NET MVC和实体框架)的其他框架将不会使用您的版本。
要解决这个问题,您可以使用与不同平台上存在的名称和API完全相同的接口创建PCL。然后使用完全相同的程序集标识(名称,版本和强名称密钥)为.NET 4.0.3,SL4和Windows应用商店创建类库,并在这些程序集中只添加[assembly:TypeForwardedToAttribute(typeof(IValidatableObject))]
属性。
然后您的PCL可以使用该接口引用PCL库,并且在使用PCL的任何应用程序中,引用该平台的类型转发程序集,该程序集将引用该接口的PCL版本重定向到该接口的PCL版本。来自平台。
答案 1 :(得分:1)