2012-09-20 81 views
0

我幾乎沒有使用Visual Basic的經驗。如何在Visual Basic中將方法添加到System.Console類中

我想添加一些方法到System.Console類爲我正在創建一個簡單的控制檯應用程序。我知道如何將extension methods添加到課程中。我試過這段代碼,但它給出了錯誤:引用非共享成員需要一個對象引用。

Imports System.Runtime.CompilerServices 
Module Module1 

    <Extension()> 
    Public Sub WriteStuff(ByRef Console As System.Console, ByVal Output As String) 

     Console.Write(Output & "?") 

    End Sub 

    Sub Main() 

     Console.WriteStuff("Hello") 
     Console.ReadKey() 

    End Sub 

End Module 

回答

1

擴展方法是實例方法;它們不能靜態應用。 System.Console是一個類,而不是一個對象,像ReadKey()這樣的方法是靜態的。靜態擴展方法是不允許的。

看看你的簽名:

Public Sub WriteStuff(ByRef Console As System.Console, ... 

這是沒有意義的參考,右(或根本對這個問題)採取了類標識符?

+0

當時沒什麼意義。然而,我所引用的鏈接是我能找到的唯一信息,所以我試了一下。 – Yoshiyahu

+0

但是,最終,向類中添加方法是不可能的,對嗎? 我發現的信息似乎與我的需求略有不同,這解釋了原因。我將類方法與對象方法混淆了。謝謝。 – Yoshiyahu

+0

@Yoshiyahu:如果他們連接提到「向類添加方法」,他們可能意味着「向類定義添加方法」,而不是「添加靜態方法」。 –

相關問題