【发布时间】:2009-05-29 08:54:37
【问题描述】:
我想编写一个泛型类,它应该使用不同的泛型参数强制转换为自身。
class Base {}
class Inherited : Base {}
class MyGeneric<T> {}
// WCF Service interface
void Foo(MyGeneric<Base> b);
// somewhere else
MyGeneric<Inherited> inherited;
Foo(inherited)
我知道这可以在 C# 4.0 中完成,但现在没有帮助。
- 我可以为每个
MyGeneric<T>星座编写一个专门的类,并在那里编写一个隐式类型转换器或实现某个接口。但我想避免这种情况。 - 我可以有一个没有泛型的接口,但在这种情况下,泛型的整体意义是在方法 Foo 上获得编译时类型安全。所以这不是一个选择。
- 因为 Foo 是一个 Operation Contract,所以它本身不能是泛型的。
任何想法如何在 C# 3.0 中解决这个问题?
【问题讨论】: