5

CommandBase<T, X>プロパティを持ちたい抽象クラスがありますInnerCommand

しかし、InnerCommandそれを含むコマンド以外の T と X の型を持つ可能性があるため、どのように定義すればよいでしょうか?

抽象クラス:

public abstract class CommandBase<T, X>
    where T : CommandResultBase
    where X : CommandBase<T, X>
{
    public CommandBase<T, X> InnerCommand { get; set; }
    (...)
}

上記の例InnerCommandでは、T と X の同じ型を持つインスタンスのみを受け入れますが、他の型を許可する必要があります。

AddOrderitemCommand:

public class AddOrderitemCommand : CommandBase<AddOrderitemResult, AddOrderitemCommand>
{
    (...)
}  

WebserviceCommand が含まれる場合があります。

public class GetMenuCommand : CommandBase<GetMenuResult,GetMenuCommand>
{
    (...)
}

これを許可するための構文についてアドバイスしてください。

4

2 に答える 2

7

基本的に次の 3 つのオプションがあります。

  1. そのプロパティの型として使用dynamicします。私がすることは何もありません。
  2. そのプロパティの型として使用objectします。私がすることは何もありません。
  3. コマンド用の非ジェネリック基本クラスまたはインターフェイスを作成します。それをCommandBase<T, X>実装して、プロパティの型として使用します。それが私が行く方法です。
于 2013-05-29T08:23:31.080 に答える