我有如下定义一个类:铸造一个泛型实例到非一般的一个
class ProxyWithSetter<T> : ProxyValue where T : Value
它的类型
Action<T> Setter;
说我有ProxyValue
实例列表的领域,其中一些也是ProxyWithSetter
,我怎么能通过一个对象,类型是Value
的子类,我确定是ProxyWithSetter
的那些ProxyValue
之一?
这里的问题是我需要将其中一个ProxyValue
s投射到ProxyWithSetter
,但是投射也需要一个类型参数。我不能提供,因为精确类型的对象我要传递给函数不知道在编译时间。我只知道它应该是Value
的子类型。
基本上,我想做的事,因为p
是ProxyWithSetter<Value>
类型的不是这个
(p as ProxyWithSetter<Value>).Setter(val);
演员返回空值,但是没有办法知道确切的类型是。我也不知道EXACT类型val
。只要知道它确实是一个Value
。
我可以理解为什么它不起作用。我只是在寻找一个可行的解决方法。
p最初是什么类型? (我不明白动作适合在哪里) –
James
2013-03-18 20:40:31
动作是ProxyWithSetter 的一个字段。它在实例创建时被设置为某种具体类型,但随后所有这些实例都被推入列表,并且具体类型丢失。 –
2013-03-18 20:42:11