Tôi đang cố triển khai hợp đồng dịch vụ chứa phương thức có giao diện chung và giao diện chung chung đó được cung cấp thông số giao diện. Tôi đã được trang trí giao diện dịch vụ với ServiceKnownType, tôi đã trang trí thực hiện dịch vụ với KnownType thường xuyên, và tôi đã được trang trí thi DataContract với KnownType thường xuyên:WCF: Tuần tự hóa của một giao diện chung có thể không?
[ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(ICallbacks))]
[ServiceKnownType(typeof(Batch<object>))]
[ServiceKnownType(typeof(Command))]
public interface IActions
{
[OperationContract]
IResponse TakeAction(IBatch<ICommand> commands);
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Reentrant)]
[KnownType(typeof(Batch<object>))]
[KnownType(typeof(Command))]
internal class Actions : IActions
{
}
[DataContract]
[KnownType(typeof(Command))]
public class Batch<T> : IBatch<T>
{
}
Đối với hồ sơ, tôi có hàng loạt ở đó vì có vẻ như bạn chỉ có thể thể hiện một kiểu biết cho một kiểu generic một lần - nó xuất hiện để phát ra BatchOfanyType, nhưng tôi không chắc chắn cách xử lý này.
Ngoại lệ tôi nhận được là "Thêm bất kỳ loại nào không được biết đến tĩnh vào danh sách các loại đã biết - ví dụ: bằng cách sử dụng thuộc tính KnownTypeAttribute hoặc thêm chúng vào danh sách các loại đã biết được chuyển đến DataContractSerializer."
Có điều gì hiển nhiên tôi đang làm sai không? Giao diện chung của giao diện có được hỗ trợ không? Đối với hồ sơ tôi đang trên C# 2.0 và .NET 3.0 cho dự án này.
Vâng, tôi đã chỉnh sửa trên nền tảng tôi đang sử dụng khi tôi nghĩ về hiệp phương sai trong C# 4.0. Oh, để nâng cấp. – bwerks