次のように定義されたクラスがあります。
class ProxyWithSetter<T> : ProxyValue where T : Value
タイプのフィールドがあります
Action<T> Setter;
ProxyValue
インスタンスのリストがあり、そのうちのいくつかは であるとします。 のサブクラスである型を持つオブジェクトを、 であると判断した s の 1 つProxyWithSetter
に渡すにはどうすればよいでしょうか。Value
ProxyValue
ProxyWithSetter
ここでの問題は、これらProxyValue
の s の1 つを にキャストする必要があることですProxyWithSetter
が、キャストには型パラメーターも必要です。関数に渡すオブジェクトの正確な型がコンパイル時にわからないため、提供できません。私はそれが のサブタイプであることだけを知っていValue
ます。
基本的にはこれがやりたかった
(p as ProxyWithSetter<Value>).Setter(val);
p
は type ではないため、キャストは null を返しますProxyWithSetter<Value>
が、正確な型を知る方法はありません。の正確なタイプもわかりませんval
。それが実際に であることを知っておいてValue
ください。
なぜうまくいかないのか理解できます。実行可能な回避策を探しているだけです。