use*_*999 7 portable-class-library
我想问一下我对可移植类库的疑问.我正在开发一个DAL层,我正在为我的业务对象使用Portable项目,这个项目的目标是.Net Framework 4.03及更高版本,SilverLight 4以及更高版本和.Net for Windows Store应用程序.
我想IValidatableObject在我的每个业务对象上实现接口,但即使System.ComponentModel.DataAnnotations可用于该项目所针对的框架,我仍然访问IValidatableObject接口,在.net可移植框架上不可用,MetadataType它上面都没有属性.有没有解决方案来实现这种方法?
对此可能没有一个简单的解决方案.您可以在具有相同功能的可移植类库中创建自己的接口.但是,这将是一个不同的接口,因此使用DataAnnotations(我认为是ASP.NET MVC和实体框架)的其他框架将不会使用您的版本.
要解决该问题,您可以创建一个PCL,其接口具有与不同平台上存在的完全相同的名称和API.然后使用完全相同的程序集标识(名称,版本和强名称密钥)为.NET 4.0.3,SL4和Windows应用商店创建类库,并在这些程序集中只放置一个[assembly:TypeForwardedToAttribute(typeof(IValidatableObject))]属性.
然后您的PCL可以通过接口引用PCL库,并且在任何使用PCL的应用程序中,引用该平台的类型转发程序集,该程序集将引用的接口的PCL版本重定向到该接口的PCL版本.平台.
| 归档时间: |
|
| 查看次数: |
3694 次 |
| 最近记录: |