[英]Passing Interface in a WCF Service?
我正在嘗試使用WCF服務,並且遇到了傳遞接口的問題。
這有效:
[ServiceContract]
public interface IHomeService
{
[OperationContract]
string GetString();
}
但這不是:
[ServiceContract]
public interface IHomeService
{
[OperationContract]
IDevice GetInterface();
}
當我嘗試編譯客戶端時,它在GetInterface方法上失敗。 我得到一個異常,說它無法將Object轉換為IDevice。
在客戶端上,IHomeService類正確地使用字符串實現GetString,因為它是返回類型,但GetInterface具有返回類型的對象。 為什么不是IDevice?
您需要告訴WCF序列化程序使用哪個類來序列化接口
[ServiceKnownType(typeof(ConcreteDeviceType)]
謝謝,當我改變它時,它的工作原理如下:
[ServiceContract]
[ServiceKnownType(typeof(PhotoCamera))]
[ServiceKnownType(typeof(TemperatureSensor))]
[ServiceKnownType(typeof(DeviceBase))]
public interface IHomeService
{
[OperationContract]
IDevice GetInterface();
}
我也從這個網站得到了幫助: http : //www.thoughtshapes.com/WCF/UsingInterfacesAsParameters.htm
我最初嘗試將接口傳遞給WCF方法,但無法使用此線程提供的答案使代碼工作。 最后,我重構了我的代碼並將抽象類傳遞給方法而不是接口。 我通過在基類上使用KnownType屬性來實現這一點,例如
[DataContract]
[KnownType(typeof(LoadTypeData))]
[KnownType(typeof(PlanReviewStatusData))]
public abstract class RefEntityData : EntityData, IRefEntityData
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.