Как получить имя типа (в виде строки) неназначенного члена? - PullRequest
0 голосов
/ 25 августа 2011

Как я могу получить тип (это имя в виде строки):

1) неназначенный член?

2) текущий класс (я имею в виду тот, что находится в области видимости), когдани один экземпляр не доступен и без использования общего метода?

РЕДАКТИРОВАТЬ: Если подумать, я начинаю думать, 1) невозможно.

РЕДАКТИРОВАТЬ: 2) может на самом деле никогдапроисходят как таковые.На самом деле я имел в виду родительский класс вложенного класса, когда ни один экземпляр родительского класса недоступен (но есть неназначенная переменная) и без использования метода общего доступа родительского класса

Ответы [ 2 ]

1 голос
/ 26 августа 2011

Если у вас нет экземпляра, тогда в методе вы можете вызвать System.Reflection.MethodBase.GetCurrentMethod().DeclaringType

РЕДАКТИРОВАТЬ

Хорошо, на основании ваших правок это выглядит как выПолучил это:

Public Class ParentClass
    Public Class NestedClass

    End Class
End Class

Я думаю, что этот метод будет делать то, что вы хотите.Обычно "null is 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 голосов
/ 25 августа 2011

Если это текущий класс, вы можете использовать

this.GetType ();

Вы также можете использовать оператор typeof см здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...