我有几个WCF服务合同,所有合同都包含完全相同的方法StopOperation
,并具有相同的签名:
[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
,它似乎都不需要。 最佳答案
您是否尝试过使用泛型类型?
例如:
[ServiceContract]
public interface IStoppable<T> where T : ErrorBase
{
[FaultContract(typeof(T))]
[OperationContract]
void StopOperation(TaskInformation taskInfo);
}
那你会说
[ServiceContract]
public interface IMyServiceA : IStoppable<ServiceAError>
{
// other specific methods
}
尚未对此进行测试,但我看不出任何不起作用的原因。