3
假設我有List
這樣的String
。如何在Dart中使用鏡像獲取泛型類型變量的具體類型?
var myList = new List<String>();
我怎樣才能弄清楚,myList
是使用鏡子String
s的List
?
我嘗試了使用ClassMirror
的typeVariables
但鏡子似乎只是描述gerneric List
類。
InstanceMirror im = reflect(myList); // InstanceMirror on instance of 'List'
ClassMirror cm = im.type; // ClassMirror on 'List'
print(cm.typeVariables['E']) // TypeVariableMirror on 'E'
我也發現了這個文檔中,但我還沒有找到一個ClassMirror
實例,其中訪問originalDeclaration
不會引發NoSuchMethodError
。
最終ClassMirror originalDeclaration
在此類型的原始聲明的反射鏡。
對於大多數類,它們是它們自己的原始聲明。但是,對於通用的 類,原始類 聲明(其中包含未綁定的類型變量)和實例化類型爲 的泛型類(具有綁定類型變量)存在區別。
FWIW我打開這個錯誤以跟蹤:http://code.google.com/p/dart/issues/detail?id = 7957您可能想要在出現更改時向其發送通知。 –
請注意,您的示例應該更準確,並以此爲例:'var myList = new List()'因爲在Dart中,類型是可選的,所以您想顯示實際的對象實例。 –
@SethLadd謝謝你的回答。我相應地改變了我的例子。所以我想答案將是「只有當這個bug被修復時纔可能」?那麼這不應該是(接受的)答案嗎? –