Tôi có một dịch vụ WCF, trong đó có các phép toán chấp nhận một lớp cơ sở không chung chung làm tham số.Sử dụng DataContractResolver tùy chỉnh trong WCF, để vận chuyển cây thừa kế liên quan đến generics
[DataContract]
class Foo
{ ... }
lớp cơ sở này được lần lượt di truyền, bởi lớp Generics như
[DataContract]
class Bar<T> : Foo
{ ... }
Để có được điều này để làm việc, tôi muốn trước đây phải đăng ký KnownTypes cho lớp Foo, và có những bao gồm tất cả các biến thể có thể có của Bar (chẳng hạn như Bar<string>
, Bar<int>
và thậm chí Bar<List<string>>
).
Với DataContractResolver trong .NET 4, tuy nhiên, tôi sẽ có thể xây dựng trình phân giải lưu trữ đúng cách (và khôi phục) các lớp.
Câu hỏi của tôi:
đang DataContractResolvers thường chỉ được sử dụng ở phía bên dịch vụ, chứ không phải bởi các khách hàng? Nếu vậy, điều đó sẽ hữu ích như thế nào trong kịch bản này?
Tôi có sai khi viết một DataContractResolver mà tuần tự hóa tên loại đủ điều kiện của một loại chung chung, chẳng hạn như
Bar`1[List`1[string, mscorlib], mscorlib]
? Không thể cùng một DataContractResolver ở phía khách hàng khôi phục các loại này?
Đối với câu hỏi thứ nhất - cả hai bên của khóa học – EvAlex