有没有办法让属性在运行时使用反射访问自己的名称和类型?我想访问此信息,而无需对类中属性的名称或索引进行硬编码。
简单示例代码:
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
答案 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