2011-05-28 54 views
2

我不確定這是否可能,但我想將類名引用關聯到共享成員方法/屬性/變量。試想一下:VB.NET:使用類名作爲表達式

Public Class UserParameters 

    Public Shared Reference As Object 

    Public Shared Function GetReference() As Object 
     Return Reference 
    End Function 

End Class 

在我想簡單地調用UserParameters並使其無論是別名GetReference或直接變量返回參考該計劃的另一部分。

我試圖仿真所述應用,請求,或會話變量: 會話(0)= Session.Item(0)

任何建議,將不勝感激。

+0

不,你不能。你爲什麼需要這個? – 2011-05-28 02:15:25

+0

模擬全局變量Session和Application。你可以在Session中像這樣訪問Item集合 - Session(0) - 而不是像這樣 - Session.Item(0)。我想用我的自定義對象來做到這一點。 – user317808 2011-05-28 12:33:58

回答

1

你不能從一個靜態方法返回一個實例成員直接(靜態方法不能訪問實例成員,因爲它不與班上的其他實例,靜態方法存在的只有一個副本)。

如果您需要設置這樣一個類,您可以從一個靜態方法返回一個實例,你需要做類似下面的東西:

Public Class SampleClass 

    Private Sub New() 
     'Do something here 
    End Sub 

    Public Shared Function GetSample() As SampleClass 
     Dim SampleClass As SampleClass 
     SampleClass = New SampleClass 

     SampleClass.Sample = "Test" 

     Return SampleClass 
    End Function 

    Private _SampleString As String 
    Public Property Sample As String 
     Get 
      Return _SampleString 
     End Get 
     Private Set(ByVal value As String) 
      _SampleString = value 
     End Set 
    End Property 

End Class 

Public Class SampleClass2 

    Public Sub New() 
     'Here you can access the sample class in the manner you expect 
     Dim Sample As SampleClass = SampleClass.GetSample 
     'This would output "Test" 
     Debug.Fail(Sample.Sample) 
    End Sub 
End Class 

這種方法在不同的地方使用在CLR中。如System.Net.WebRequest class。它在這種使用方式中被實例化:

' Create a request for the URL.   
     Dim request As WebRequest = WebRequest.Create("http://www.contoso.com/default.html") 
+0

道歉 - 我犯了一個錯字 - 引用也是共享的。基本上我只想讓UserParameters爲一個共享類變量(Reference)或一個共享方法(GetReference)別名,然後它可以返回共享變量的值。要麼會很棒。 – user317808 2011-05-28 04:41:22