我可以爲所有System.Object
(所有)的子類創建擴展方法嗎?VB.NET:不可能在System.Object實例上使用擴展方法
例子:
<Extension>
Public Function MyExtension(value As Object) As Object
Return value
End Function
上述功能不會爲對象實例的工作:
Dim myObj1 As New Object()
Dim myObj2 = myObj1.MyExtension()
編譯器不接受它,是在我的電腦問題? :)
UPDATE
這個問題似乎只發生在VB,其中對象的成員被查找到的反射(late-bound)。
更新後ANSWERED
僅供參考,如VB的優點是,C#缺少也就是說,導入模塊的成員導入到全球範圍,所以你仍然可以使用這個功能,而它們的包裝:
Dim myObj2 = MyExtension(myObj1)
你測試的代碼? 第三行(someObj)不適用於我。 – Shimmy 2010-07-12 12:32:25
是的,這對我有用。你是怎麼編寫你的IsIn()擴展方法的版本的?我編輯了我的文章,包括我的實施,以幫助你。 – mattmc3 2010-07-12 12:48:12
如果您在代碼中輸入了'someObj'作爲'Object',那麼這絕對不應該爲您工作。 – 2010-07-12 13:09:40