如何获取未分配成员的类型名称(作为字符串)?

时间:2011-08-25 19:08:44

标签: vb.net reflection types

我如何获得以下类型(它的名称为字符串):

1)未分配的成员?

2)当没有实例且没有使用共享方法时,当前类(我的意思是范围中的那个)?

编辑:想想我,我开始认为1)是不可能的。

编辑:2)事实上可能永远不会发生。实际上,当没有父类的实例可用时(但是未赋值的变量是)并且没有使用父类的共享方法时,我的意思是嵌套类的父类

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:-1)

如果是当前的课程,你可以使用

this.GetType();

您也可以使用typeof运算符 见here