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