Tôi đang thử nghiệm với Dịch vụ WCF và đã gặp phải vấn đề khi truyền Giao diện.Truyền Giao diện trong Dịch vụ WCF?
này hoạt động:
[ServiceContract]
public interface IHomeService
{
[OperationContract]
string GetString();
}
nhưng điều này không:
[ServiceContract]
public interface IHomeService
{
[OperationContract]
IDevice GetInterface();
}
Khi tôi cố gắng biên dịch cho khách hàng nó không thành công trên phương pháp GetInterface. Tôi nhận được một ngoại lệ nói rằng nó không thể chuyển đổi Object thành IDevice.
Về phía client, lớp IHomeService thực hiện chính xác GetString bằng một chuỗi vì nó là returntype, nhưng GetInterface có một kiểu lại đối tượng. Tại sao nó không phải là IDevice?
Tôi rất tiếc, nhưng tôi không nghĩ rằng tôi hiểu. Giả sử tôi muốn phương thức GetInterface trả về hai lớp khác nhau, SimpleDevice và AdvancedDevice, cả hai đều triển khai giao diện IDevice. Tôi có nên đặt ServiceKnownType cho cả hai loại không? –
Khi deserializing, làm thế nào để WCF biết những gì thực hiện loại IHomeService để sử dụng? – Will
Vâng, tôi nghĩ bạn đã hiểu. Bạn đang nói với WCF các loại có thể thực hiện giao diện. Bạn có thể vượt qua bất kỳ loại nào thông qua, miễn là WCF biết rằng các kiểu đã biết này thực hiện giao diện và có thể tuần tự hóa được. –