1

オブジェクトを同じ方法で処理するクラスがあります。それは次のようなものです:

class Handler<T>{
    private T _obj;
    public T obj{
        get{
            ...//do sth
            return _obj;
        }
        set{
            ...//do sth
            _obj = value;
        }
    }
    ... // some other properties, no T anymore
}

Handler型を無視して、オブジェクトで動作する大量のコードがあります。つまり、タイプTは彼らのためではなく、他のフィールドを設定しています。などの入れ物がありますHandler<>

最後に、正しいタイプの Handler を返す必要があります。

を使用したかったHandler<object>のですが、変換する方法がわかりませんHandler<SomeClass>

このような状況をどのように処理できますか?

4

2 に答える 2

3

Handler<T>すべての非汎用コードを含むの基本クラスを作成してみませんか?

class HandlerBase
{
   // some other properties
}

class Handler<T> : HandlerBase
{
    public T obj { ... }
}

「大量のコード」が を無視する場合はTHandlerBase.

于 2012-12-07T12:36:08.850 に答える
0

IHandler インターフェイスで試すことができます。

IHandler<SomeClass> h1 = new Handler<SomeClass>();
IHandler<Object> h2 = h1;

これはうまくいきます!MSDN の共分散に関する
詳細情報

于 2012-12-07T12:45:57.260 に答える