gpt4 book ai didi

portable-class-library - 有什么方法可以在可移植类库项目上实现 IValidatableObject 吗?

转载 作者:行者123 更新时间:2023-12-04 11:54:31 27 4
gpt4 key购买 nike

我想问一下我对可移植类库的疑问。我正在开发一个 DAL 层,我正在为我的业务对象使用 Portable 项目,该项目针对 .Net Framework 4.03 及更高版本,SilverLight 4和更高版本以及适用于 Windows 应用商店应用程序的 .Net。

我想实现IValidatableObject我的每个业务对象上的接口(interface),但即使 System.ComponentModel.DataAnnotations可用于该项目所针对的框架,我无法访问 IValidatableObject接口(interface),在.net 可移植框架上不可用,MetadataType属性存在于其上。有什么解决方案可以实现这种方法吗?

最佳答案

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

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

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

关于portable-class-library - 有什么方法可以在可移植类库项目上实现 IValidatableObject 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16023742/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com