我有一个名为" person"的类,有属性。一些属性名称的例子是......
person.name
person.surname
person.firstname
我试图将此属性NAME传递给子程序...不确定我是否可以执行此操作。我想这样做是因为我将拥有100个属性,而且我不想要100个IF然后声明。
这就是我目前正在做的事情,我想用一种方法来清理它。如果是这样的语句,请检查图片100,检查不同的属性名称。
If propname= "FirstName" Then
If GetSet.caseexact = True Then
If GetSet.casesensativity = True Then
View.Filter = Function(m) DirectCast(m, person).FirstName = s
Else
View.Filter = Function(m) DirectCast(m, person).FirstName.ToLower = s.ToLower
End If
Else
If GetSet.casesensativity = True Then
View.Filter = Function(m) DirectCast(m, person).FirstName.Contains(s)
Else
View.Filter = Function(m) DirectCast(m, person).FirstName.ToLower.Contains(s.ToLower)
End If
End If
End If
我试图用方法清理它,所以我可以将属性名称传递给方法......如果这是可能的话。
Public Sub properties(filterstring As String, getProp as person)
View.Filter = Function(m) DirectCast(m, person).getProp = filterstring
End Sub
有关如何使其发挥作用或最佳方法的任何指导?
答案 0 :(得分:1)
反思会起作用。如果属性公开,那么您可以使用CallByName()
简单地使用代码:
Dim p As New Person
p.FirstName = "Mike"
Dim s As String = "Bob"
Dim propname As String = "FirstName"
View.Filter = (CallByName(p, propname, CallType.Get) = s)
' < or >
View.Filter = (CallByName(p, propname, CallType.Get).ToString.ToLower = s)