属性如何通过反射解析自己的名称和类型?

时间:2010-03-12 18:38:53

标签: vb.net reflection properties

有没有办法让属性在运行时使用反射访问自己的名称和类型?我想访问此信息,而无需对类中属性的名称或索引进行硬编码。

简单示例代码:

Private ReadOnly Property MyProperyName() As String
    Get
        Console.WriteLine((Get Current Property Info).Type.ToString)
        Console.WriteLine((Get Current Property Info).Name)
        Return ""
    End Get
End Property

预期产出:

System.String
MyPropertyName

1 个答案:

答案 0 :(得分:2)

您可以使用StackTrace获取当前方法:

Dim currentMethod = CType(new StackTrace(0, false).GetFrame(0).GetMethod(), _ 
    System.Reflection.MethodInfo)

如果你可以假设你在一个属性中,那么你可以从方法名称的前面剥离“get_”:

Dim propertyName as string = currentMethod.Name.SubString(4)

并使用ReturnType作为属性类型:

Dim propertyType as Type = currentMethod.ReturnType