2013-04-15 10 views
7

Tôi muốn hỏi về một nghi ngờ mà tôi có liên quan đến Thư viện lớp học di động. Tôi đang phát triển một lớp DAL và tôi đang sử dụng dự án Portable cho các đối tượng kinh doanh của mình, dự án này nhắm đến .Net Framework 4.03 và cao hơn, SilverLight 4 và cao hơn và .Net cho Windows Store Apps.Có cách nào tôi có thể triển khai IValidatableObject trên Dự án Thư viện Lớp Di động không?

Tôi muốn triển khai giao diện IValidatableObject trên từng đối tượng kinh doanh của mình, nhưng ngay cả khi System.ComponentModel.DataAnnotations có sẵn cho khung mà dự án này nhắm mục tiêu, tôi không truy cập được vào giao diện IValidatableObject. khung, không phải thuộc tính MetadataType tồn tại trên đó. Có giải pháp nào để đạt được cách tiếp cận này không?

Trả lời

6

Có lẽ không phải là giải pháp dễ dàng cho việc này. Bạn có thể tạo giao diện của riêng bạn trong Thư viện lớp di động với cùng chức năng. Tuy nhiên đó sẽ là một giao diện khác nhau vì vậy các khung công tác khác sử dụng DataAnnotations (ASP.NET MVC và Entity Framework tôi nghĩ) sẽ không sử dụng phiên bản của bạn.

Để khắc phục sự cố đó, bạn có thể tạo PCL với giao diện có cùng tên và API giống như tồn tại trên các nền tảng khác nhau. Sau đó tạo các thư viện lớp cho .NET 4.0.3, SL4 và Windows Store với cùng một định danh lắp ráp chính xác (tên, phiên bản và tên khóa mạnh), và trong các assembly đó chỉ cần đặt thuộc tính [assembly:TypeForwardedToAttribute(typeof(IValidatableObject))].

Sau đó, PCL của bạn có thể tham chiếu thư viện PCL với giao diện và trong bất kỳ ứng dụng nào sử dụng PCL, tham khảo hội đồng chuyển tiếp loại cho nền tảng đó, sẽ chuyển hướng tham chiếu đến phiên bản PCL của giao diện đến giao diện có sẵn trong nền tảng.

+0

Cảm ơn rất nhiều, có vẻ như là một giải pháp tốt đẹp. – user2275999