我有几个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,它似乎都不起作用。
发布于 2012-12-14 00:39:36
您尝试过使用泛型类型吗?
例如:
[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
}我还没有测试过这个,但是我看不出有任何理由不应该这样做。
https://stackoverflow.com/questions/13862875
复制相似问题