0

1が継承される2つのクラスがあります。Acme123Response に似た、応答クラスが異なるクラスが他にも多数あります。つまり、ApplicationInfo です。

ApplicationInfo は、サードパーティの Web サービスに属しています。問題は、ApplicationInfo と残りの部分が直接の制御外にある場合に、BuyerResponse に where 制約を追加することは可能かということです。

public class Acme123Response : BuyerResponse<ApplicationInfo>
{
    public Acme123Response(ApplicationInfo response)
        : base(response)
    {
    }
}

public abstract class BuyerResponse<T> : ResponseBase
{
    readonly T _response;

    protected T Response
    {
        get { return _response; }
    }

    protected BuyerResponse(T response)
    {
        _response = response;

        // Do something else
    }
}
4

1 に答える 1

0

私があなたのコメントを正しく理解していれば、あなたの質問は、サードパーティのアセンブリで定義されたクラスの基本インターフェイスを定義できるかということです. 私の知る限り、これは不可能です(ソースをフォークできたとしても、私はやりたいことではありません):あなたができると思う最善の方法は、統一インターフェースを実装するラッパークラス/アダプターを定義し、次にあなたのそれに対する一般的な制約。

これには、インターフェースを使用してサードパーティのクラスから独自の実装を保護する効果もあります。これは、通常、とにかくやりたいことです。

于 2013-08-26T20:04:42.277 に答える