首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法在可移植类库项目中实现IValidatableObject?

有没有办法在可移植类库项目中实现IValidatableObject?
EN

Stack Overflow用户
提问于 2013-04-16 03:57:50
回答 2查看 3.8K关注 0票数 7

我想问一个关于可移植类库的问题。我正在开发一个DAL层,我正在为我的业务对象使用可移植项目,这个项目的目标是.Net框架4.03和更高版本,SilverLight 4和更高版本,以及用于Windows Store Apps的.Net。

我想在我的每个业务对象上实现IValidatableObject接口,但即使System.ComponentModel.DataAnnotations可用于此项目的目标框架,我也无法访问IValidatableObject接口,在.net便携框架上不可用,MetadataType属性也不存在。有什么解决方案可以实现这种方法吗?

EN

回答 2

Stack Overflow用户

发布于 2013-04-17 04:40:14

对于这个问题可能没有一个简单的解决方案。您可以在具有相同功能的可移植类库中创建自己的接口。然而,这将是一个不同的接口,因此使用DataAnnotations的其他框架(我认为是ASP.NET、MVC和实体框架)将不会使用您的版本。

为了解决这个问题,您可以使用与不同平台上存在的完全相同的名称和API的接口来创建PCL。然后使用完全相同的程序集标识(名称、版本和强名称键)为.NET 4.0.3、SL4和Windows Store创建类库,并在这些程序集中放入一个[assembly:TypeForwardedToAttribute(typeof(IValidatableObject))]属性。

然后,您的PCL可以通过接口引用PCL库,并且在使用PCL的任何应用程序中,引用该平台的类型转发程序集,这会将对接口的PCL版本的引用重定向到平台中的PCL版本。

票数 6
EN

Stack Overflow用户

发布于 2014-11-12 04:51:24

下面是Daniel描述的解决方案的更长描述:http://log.paulbetts.org/the-bait-and-switch-pcl-trick/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16023742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档