4

私はいくつかの WCF サービス コントラクトを持っていますが、そのすべてにまったく同じ method が含まれて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、かかりませんでした。

4

1 に答える 1

2

ジェネリック型を使ってみましたか?

例えば:

[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
}

これはテストしていませんが、これが機能しない理由はわかりません。

于 2012-12-13T16:39:35.990 に答える