我將vb.net轉換爲c#.net時出現更多問題。在對象上轉換vb.net靜態方法調用
我有一些在vb.net文件有「選項嚴格關閉」,以允許糟糕的編程。當我轉換爲C#我用「動態」的,直到我回來和解決問題,這一點也適用於所有情況
但現在我有這樣的代碼:
Public Class ContractResults
'Big class definition
Public Shared Sub CleanCache()
'Code here
End Sub
End Class
而且與Option Strict Off選項文件:
Public Sub VerifyResults(result as Object)
'Here, result is normally ContractResults
'first it check for that then call this:
result.CleanCache()
End Sub
在c#中我使用「dynamic」,但是當我使用動態引用調用「static」方法時會彈出運行時錯誤。在vb.net中,我可以稱爲「共享」的情況下分,但在C#這是不允許的
例外: 「Microsoft.CSharp.RuntimeBinder.RuntimeBinderException」 「會員‘ContractTypes.ContractResults.CleanCache()’不能使用實例引用進行訪問;使用類型名稱來代替它「
看來我必須將代碼轉換爲使用實際類型,但這意味着需要重寫更多的部分。有人能夠展示另一種方式嗎?
我要確保你不認爲我可以使用
(result as ContractResults).CleanCache();
因爲可以在傳遞各類具有「CleanCache()」方法,但不從什麼比其它同繼承「目的」。有很多類型(30!)有這種「靜態」方法,所以這就是爲什麼它使用Option Strict Off
對於30種類型,我只需將Option Strict On打開並在VB中修復它。 IDE會給你每個警告,你應該能夠快速完成所有事情。 – 2010-11-30 19:23:03