[英]How to implement a generic method that returns a specific type on an interface in C#
我正在開發幾個WCF Http Web服務。 所有這些WCF Web服務都具有相同的操作,但是對於給定的操作,每個WCF Web服務都返回不同的類型。
例如,有兩個服務ServiceA
和ServiceB
,都具有操作GetData
。 但是,對於ServiceA
, GetData
操作必須返回一個int
,對於ServiceB
, GetData
操作必須返回一個string
:
[ServiceContract]
public interface IServiceA
{
[OperationContract]
int GetData();
}
public class ServiceA : IServiceA
{
public int GetData()
{
return 0;
}
}
[ServiceContract]
public interface IServiceB
{
[OperationContract]
string GetData();
}
public class ServiceB : IServiceB
{
public string GetData()
{
return "any text";
}
}
WCF Web服務需要正確公開元數據,我的意思是,它們必須公開GetData
操作返回的數據類型( int
, string
),以便告訴服務使用者期望的數據類型。 換句話說,具有XSD模式。
如您所知,當您創建新的WCF Web服務時,VS將創建一個用於聲明操作的接口,並聲明所需的[ServiceContract]
和[OperationContract]
屬性,並創建實現該接口的類。
為了使代碼標准化並節省一些時間來鍵入接口的實現,我想創建一個所有WCF Web服務都通用的接口,該接口將通用操作(例如GetData
)聲明為通用,然后在實施。
我想做這樣的事情:
[ServiceContract]
public interface IServiceCommon
{
[OperationContract]
T GetData<T>();
}
[ServiceContract]
public interface IServiceA : IServiceCommon
{
}
public class ServiceA : IServiceA
{
public int GetData()
{
return 0;
}
}
但是,我收到以下錯誤:
“ ServiceA”未實現接口成員“ IServiceCommon.GetData()”
如何實現在GetData方法上返回任何類型值的任何服務類?
在撰寫本文時,我通過聲明以下接口來提出解決方案:
[ServiceContract]
public interface IServiceCommon<T>
{
[OperationContract]
T GetData();
}
[ServiceContract]
public interface IServiceA : IServiceCommon<int>
{
}
public class ServiceA : IServiceA
{
public int GetData()
{
return 0;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.