2011-08-25 47 views
0

我怎樣才能得到的類型(它的名稱爲一個字符串):如何獲取未指定成員的類型名稱(作爲字符串)?

1)一個未分配的成員?

2)當沒有實例可用並且不使用共享方法時,當前類(我的意思是範圍內的那個類)?

編輯:來想想我,我開始認爲1)是不可能的。

編輯:2)可能實際上從來沒有像這樣發生。實際上我是父類中的嵌套類時,沒有父類的實例可用(但尚未分配的變量),並且不使用父類

+0

當前類範圍'Me'在VB.Net。爲什麼不這樣做? –

+0

不會有任何事例,但我改述了這個問題,請參閱上文。 – Peladao

回答

1

如果你沒有一個實例,然後在方法中可以調用System.Reflection.MethodBase.GetCurrentMethod().DeclaringType

編輯

好吧,根據您的編輯它看起來像你有這個:

Public Class ParentClass 
    Public Class NestedClass 

    End Class 
End Class 

我認爲這種方法會做你想做的。通常「null爲null」並且沒有類型。但是下面的方法通過強制編譯器通過泛型來推斷類型來欺騙(種類)。

Public Shared Function GetParentClass(Of T)(ByVal obj As T) As String 
    ''//Get the type passed in 
    Dim ThisType = GetType(T) 

    ''//Get the outer type 
    Dim BaseType = ThisType.DeclaringType 

    ''//Return the parent name 
    Return BaseType.Name 
End Function 

然後就可以調用此類似:

Dim X As ParentClass.NestedClass = Nothing 
    Dim PCName = GetParentClass(X) 
    Console.WriteLine(PCName) 
+0

謝謝。請參閱我的編輯。 – Peladao

+0

好的,我會試試這個,謝謝 – Peladao

-1

的共享方法,如果當前的類,你可以使用

this.GetType();

您還可以使用typeof運算符 看到here

+0

沒有實例,所以'this'將不起作用 – Peladao

+0

'typeof'它似乎你需要知道類型已經 – Peladao

+0

你至少有一個null變量? 'Dim Obj as MyCustomClass' –

相關問題