2009-02-10 73 views
0

我有一个类如下如何筛选或查找基于属性的属性

Public Class Foo 
    Private _Name As String 
    <ShowInDisplay()> _ 
    Public Property Name() As String 
     Get 
      Return _Name 
     End Get 
     Set(ByVal value As String) 
      _Name = value 
     End Set 
    End Property 

    Private _Age As String 
    Public Property Age() As String 
     Get 
      Return _Age 
     End Get 
     Set(ByVal value As String) 
      _Age = value 
     End Set 
    End Property 

    Private _ContactNumber As String 
    <ShowInDisplay()> _ 
    Public Property ContactNumber() As String 
     Get 
      Return _ContactNumber 
     End Get 
     Set(ByVal value As String) 
      _ContactNumber = value 
     End Set 
    End Property 
End Class 

我只需要工作只具有特定属性,例如这些属性:ShowInDisplay

Public Sub DisplayOnlyPublic(ByVal Someobject As Foo) 
    For Each _Property As something In Someobject.Properties 
     If _Property.HasAttribute("ShowInDisplay") Then 
      Console.WriteLine(_Property.Name & "=" & _Property.value) 
     End If 
    Next 
End Sub 

回答

2

编辑:用正确的VB更新致电:

If _Property.IsDefined(GetType(ShowInDisplayAttribute), True) Then 
+0

GetType()关键字! ;-) – Cerebrus 2009-02-10 08:12:49

0

除了可以使用扩展方法/ lambda表达式(无论在c#中)使用它更好之外,没有比在每个可用属性上使用MemberInfo.IsDefined更简单的方法。