Tệ đến mức nào? Tôi đã đọc vô số bài báo và không bao giờ tạo ra DataContracts trừu tượng với hành vi trước đây, nhưng có vẻ như làm như vậy sẽ giải quyết được vấn đề mà tôi đang gặp phải sẽ ngăn cản tôi tạo ra các nhà máy ở khắp mọi nơi để xác định thực hiện lớp con. Câu hỏi của tôi là, tôi sẽ bị trừng phạt nếu tôi quyết định thêm hành vi vào hợp đồng dữ liệu của tôi? Tất nhiên họ không thể được tiêu thụ và có để thực hiện một số hoạt động cụ thể cho loại phân lớp đó trước khi gọi các cuộc gọi kho lưu trữ và dữ liệu được duy trì. Tôi có thể tạo các lớp "Manager" cho mỗi phân lớp nhưng điều đó đặt tôi trở lại các nhà máy và tôi đang cố gắng tiếp cận đa hình hơn. Cảm ơn trước.DataContracts với hành vi
Trả lời
Tại sao bạn không thể tạo hợp đồng dữ liệu (MyDataContract) theo kiểu cổ điển, chỉ các trường dữ liệu, không có gì khác và sau đó lấy được lớp hành vi của bạn từ nó?
public class BehaviorialClass : MyDataContract
{
.....
}
Bằng cách đó, bạn có một tốt đẹp, tách sạch các mối quan tâm, hợp đồng dữ liệu của bạn không phải là "ô nhiễm" bởi hành vi đó có thể không thực sự đối phó với anyway .....
Marc
Một thỏa hiệp tốt để đưa hành vi trực tiếp vào DataContracts của bạn sẽ xác định hành vi là extension methods trong cùng một hội đồng như Hợp đồng của bạn hoặc một hội đồng khác hoàn toàn. Tùy chọn, các phương pháp mở rộng có thể được đặt trong một không gian tên riêng biệt từ các hợp đồng để tiếp tục cách ly sự tách biệt của dữ liệu và hành vi.
Bằng cách đó, Hợp đồng của bạn được giữ sạch sẽ nhưng đồng thời, người tiêu dùng .NET của hợp đồng của bạn sẽ có cách dễ dàng để nhập chức năng bổ sung liên quan đến DataContracts đó.
Bạn có thể thêm tất cả hành vi bạn muốn vào hợp đồng dữ liệu của mình. Bạn nên ghi rõ thực tế là hành vi sẽ không hiển thị với khách hàng, hoặc ai đó sẽ thất vọng sau này. Ngoài ra tài liệu thực tế là chăm sóc phải được thực hiện để không thêm bất kỳ dữ liệu thực hiện phụ thuộc vào hợp đồng dữ liệu, vì nó không phải bất cứ điều gì bạn muốn vượt qua cho khách hàng.
Tất cả trong tất cả, tôi nghĩ bạn nên tốt hơn để cho hợp đồng dữ liệu là hợp đồng dữ liệu và để thoát khỏi hành vi đó.
Tại một thời điểm nào đó bạn sẽ muốn sử dụng MemberwiseClone và triển khai giao diện mà không cần dịch trung gian dữ liệu không cần thiết (và thậm chí tệ hơn, không cần thiết BẢO DƯ)NG). Các phương thức mở rộng là khi bạn theo nghĩa đen không có quyền kiểm soát đối với định nghĩa đối tượng nhưng vẫn cần sự lưu loát hướng đối tượng; họ thêm công việc bận rộn trong bất kỳ tình huống nào khác và phân tán các định nghĩa lớp tồi tệ hơn C/C++. Buck các "xu hướng" và làm những gì làm việc cho bạn, bạn chỉ có thể khám phá một mô hình mà thay đổi toàn bộ ballgame (như AsyncEnumerator của Jeffrey Richter).
- 1. hành vi Odd với timeIntervalSince1970
- 2. Hành vi lạ với Microsoft.WindowsCE.Forms
- 3. Hành vi lạ với FileStream.WriteFile
- 4. Hành vi lạ với các chuỗi java
- 5. Weird hành vi serialization với HashMap
- 6. Hành vi lạ với UISegmentedControl và UIAppearance
- 7. Bất ngờ hành vi với implicits
- 8. Hành vi UIPageViewController khác với Scroll & PageCurl
- 9. hành vi kỳ lạ với NOT IN
- 10. số Parsing với hành vi lạ double.TryParse
- 11. Cài đặt hành vi Propel với Composer
- 12. Hành vi lạ của ListView với CheckBox
- 13. REST with Polymorphic DataContracts - Deserialization Fails
- 14. Hành vi đặc biệt của hành vi đặc biệt (lạ?)
- 15. hành vi Zend_Form_Element_File lẻ
- 16. NSLog - Hành vi lạ
- 17. Strange hành vi Java + = điều hành
- 18. FileDialog Hành vi DoubleClick
- 19. Strange giảm hành vi
- 20. FFmpeg-hành vi lạ
- 21. Mảng ánh xạ hành vi lạ với observableArray với ko.mapping.fromJS
- 22. Hành vi của GCC với tiêu chuẩn :: async (std :: launch :: async) so với hành vi của Clang
- 23. Hành vi của ResultSet.TYPE_SCROLL_SENSITIVE
- 24. hành vi strcmp
- 25. Hành vi Drupal
- 26. Weird $ hành vi: $ {\ string}
- 27. Hành vi của removeEventListener
- 28. RelayCommand CanExecute hành vi
- 29. Hành vi của CopyOnWriteArrayList
- 30. hành vi cout lạ
'Tôi nghĩ rằng bạn nên tốt hơn để cho phép hợp đồng dữ liệu là hợp đồng dữ liệu và để lại hành vi của họ.' MỞ R THNG! –