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 { ... }
}

T如果您的“大量代码”忽略HandlerBase.

于 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 回答