我有如下定義一個類:鑄造一個泛型實例到非一般的一個
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