2010-03-12 12 views
1

有没有一种方法让属性访问自己的名称和类型在运行时使用反射?我想访问这个信息,而不用硬编码类中的属性名称或索引。属性如何解析其自己的名称和反射类型?

简单的例子代码:

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 

回答

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 
+0

很不错的感谢! – 2010-03-12 18:59:18

相关问题