4
我有幾個WCF服務合同,所有這些都包含完全相同的方法StopOperation
,具有相同的特徵:FaultContract繼承
[ServiceContract]
public interface IMyServiceA
{
[FaultContract(typeof(ServiceAError))]
[OperationContract]
void StopOperation(TaskInformation taskInfo);
// other specific methods
}
我想什麼,能夠做的是提取StopOperation
成接口,IStoppable
,並讓我的所有服務都繼承這個操作。但是,我在定義FaultContract
時遇到了問題,因爲它定義了具體的故障類型。
是否有可能有FaultContract
指抽象ErrorBase
類型,並請有KnownContract
莫名其妙指定具體的嗎?有點像:
[ServiceContract]
public interface IStoppable
{
[FaultContract(typeof(ErrorBase))]
[OperationContract]
void StopOperation(TaskInformation taskInfo);
}
不管我在哪裏試過指定KnownContract
,它似乎並沒有採取。
是的,這看起來像一個合理的解決方案!我會讓你知道它是怎麼回事! –
由於沒有人回答,我會接受你的。我最終沒有使用這種解決方案,因爲我不想將錯誤類型指定爲通用參數......我最終使用了[適配器模式](http://www.dofactory.com/Patterns/PatternAdapter .aspx)將不同的服務實現封裝在通用接口後面。 –