2015-05-29 39 views
5

Tôi đang sử dụng PostSharp Express trong VS2013 để tạo các khía cạnh xác thực mà tôi có thể áp dụng cho các thuộc tính của mình. Tôi đã theo dõi this PostSharp guide on location interception. Tất cả họ đều làm việc tốt nhưng tôi nhận được hàng trăm cảnh báo nêu:Xung đột xung đột PostSharp cảnh báo

khía cạnh

mâu thuẫn về "MyNamespace.get_MyProperty": biến đổi ".MyValidation1Attribute: Chặn bởi lời khuyên OnGetValue, OnSetValue" và "MyNamespace.Validation2Attribute: Chặn bởi lời khuyên OnGetValue, OnSetValue "không giao hoán, nhưng không phải là được yêu cầu mạnh mẽ. Trình tự thực hiện của họ là không xác định.

Điều tôi nghĩ là kết quả của việc đặt nhiều khía cạnh xác thực vào cùng một thuộc tính. Trước tiên, tôi đã cố gắng phân tách các thuộc tính, mà tôi hiểu là phải ra lệnh cho chúng: [Validation1,Validation2] nhưng các cảnh báo vẫn còn.

Từ khía cạnh của tôi là giao hoán (nó không quan trọng mà theo thứ tự chúng được thực hiện), the PostSharp docs advise để đánh dấu chúng như vậy sử dụng AspectTypeDependency như sau:

[AspectTypeDependency(AspectDependencyAction.Commute, typeof(ILocationValidationAspect))] 

Tuy nhiên, dường như không gian tên PostSharp.Aspects.Dependencies không phải là được bao gồm theo giấy phép Express. Có giải pháp nào có thể để giải quyết những cảnh báo này bằng chỉ sử dụng giấy phép Express không? Hoặc điều này có nghĩa là tôi không bao giờ có thể sử dụng nhiều hơn một khía cạnh mà không mua pro hoặc cuối cùng? Tôi sẽ sẵn sàng cố gắng thực hiện bộ điều khiển phụ thuộc của riêng mình nếu tôi có thể loại bỏ những cảnh báo này theo cách này.

Trả lời

5

AspectTypeDependency yêu cầu phiên bản Professional. Nhưng loại AspectTypeDependency nên được bao gồm ngay cả trong phiên bản Express - có nên sử dụng không được cấp phép tính năng thời gian xây dựng lỗi sau đó.

Bạn có thể sử dụng AspectPriority:

[Validation1(AspectPriority = 1), Validation2(AspectPriority = 2)] 

Hoặc bạn có thể gán ưu tiên trong constructor khía cạnh. Nó ít linh hoạt hơn nhiều so với đặt hàng theo khía cạnh nhưng ít nhất nó giải quyết được cảnh báo.

+0

Cảm ơn bạn, thêm AspectPriority vào từng công trình xác thực! – Ivan