我有一个定义如下的类:
class ProxyWithSetter<T> : ProxyValue where T : Value
它有一个类型的字段
Action<T> Setter;
假设我有一个ProxyValue实例列表,其中一些也是ProxyWithSetter,我怎样才能将一个类型为 的子类的对象传递给我确定为 aValue的那些 s 之一?ProxyValueProxyWithSetter
这里的问题是我需要将其中一个ProxyValues 转换为 a ProxyWithSetter,但转换还需要一个类型参数。我无法提供,因为我要传递给函数的对象的确切类型在编译时是未知的。我只知道它应该是 的子类型Value。
基本上,我想这样做
(p as ProxyWithSetter<Value>).Setter(val);
强制转换返回 null 因为p它不是 type ProxyWithSetter<Value>,但是没有办法知道它的确切类型。我也不知道. val只知道它确实是一个Value.
我可以理解为什么它不起作用。我只是在寻找可行的解决方法。