2013-04-15 27 views
7

我想問一個關於可移植類庫的疑問。我正在開發一個DAL層,我爲我的業務對象使用了可移植項目,該項目的目標是.Net Framework 4.03及更高版本,SilverLight 4及更高版本以及.Net for Windows Store應用程序。有沒有什麼辦法可以在可移植類庫項目上實現IValidatableObject?

我想實現每個我的業務對象的IValidatableObject接口,但即使System.ComponentModel.DataAnnotations可用於該項目的目標是到框架,我haven't到IValidatableObject接口訪問,不可用的.NET便攜式框架,它不存在MetadataType屬性。有沒有解決方案來實現這種方法?

回答

6

這可能不是一個簡單的解決方案。您可以在具有相同功能的可移植類庫中創建自己的接口。但是,這將是一個不同的接口,所以使用DataAnnotations(我認爲ASP.NET MVC和實體框架)的其他框架將不會使用您的版本。

爲了解決這個問題,你可以創建一個具有完全相同名稱和API的接口的PCL,這些接口可以在不同的平臺上使用。然後使用完全相同的程序集標識(名稱,版本和強名稱密鑰)爲.NET 4.0.3,SL4和Windows Store創建類庫,並在這些程序集中僅添加一個[assembly:TypeForwardedToAttribute(typeof(IValidatableObject))]屬性。

然後,您的PCL可以使用該接口引用PCL庫,並且在使用PCL的任何應用程序中引用該平臺的類型轉發程序集,該程序會將該接口的引用重定向到PCL版本的接口來自平臺。

+0

非常感謝,這似乎是一個很好的解決方案。 – user2275999

相關問題