如何筛选或基于属性查找属性 [英] How to filter or find properties based on attributes

查看:154
本文介绍了如何筛选或基于属性查找属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个类如下:

 公共类Foo
    私人_Name作为字符串
    &其中; ShowInDisplay()> _
    公共属性Name()作为字符串
        得到
            返回_Name
        最终获取
        设置(BYVAL值作为字符串)
            _Name =价值
        结束设定
    高端物业

    私人_Age作为字符串
    公共财产年龄()作为字符串
        得到
            返回_Age
        最终获取
        设置(BYVAL值作为字符串)
            _Age =价值
        结束设定
    高端物业

    私人_ContactNumber作为字符串
    &其中; ShowInDisplay()> _
    公共财产ContactNumber()作为字符串
        得到
            返回_ContactNumber
        最终获取
        设置(BYVAL值作为字符串)
            _ContactNumber =价值
        结束设定
    高端物业
末级
 

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

 公用Sub DisplayOnlyPublic(BYVAL Someobject为Foo)
    对于每个_property作为东西Someobject.Properties
        如果_Property.HasAttribute(ShowInDisplay),然后
           Console.WriteLine(_Property.Name&安培;=&安培; _Property.value)
        结束如果
    下一个
结束小组
 

解决方案

修改:已更新正确的VB 的GetType()电话:

 如果_Property.IsDefined(的GetType(ShowInDisplayAttribute),真)然后
 

I have a class as follows

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

I just need to work on only those properties which has a specific attribute eg: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

解决方案

Edit: Updated with correct VB GetType() call:

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

这篇关于如何筛选或基于属性查找属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆