当前位置 : 主页 > 编程语言 > c语言 >

.NET自定义属性属性?

来源:互联网 收集:自由互联 发布时间:2021-06-24
编辑: 我最好改写一下: 如何将Class属性的GET实现转换为/使用自定义属性? (我已经为属性添加了即时变量(classname,propertyname),但我宁愿自动获取这些变量.) Public Class CustomClass CustomAtt
编辑:
我最好改写一下:
如何将Class属性的GET实现转换为/使用自定义属性? (我已经为属性添加了即时变量(classname,propertyname),但我宁愿自动获取这些变量.)

Public Class CustomClass
    <CustomAttributeClass(ClassName:="CustomClass", PropertyName = "SomeProperty")> _
    Public Property SomeProperty() as String
        Get() as String
            //This implementation should be handled by the attribute class
        End Get

        Set(Byval value as String)
            Me._someProperty = value
        End Set
    End Property
End Class

老问题:

我想为类创建自定义属性属性.我可以创建一个派生自Attribute的类,并使用该属性“标记”该属性,但是从哪里开始?

我有一个存储库,我可以根据属性值快速获取数据.我想在属性中概括属性的行为,但我不知道如何从这里开始……任何帮助都会被大大接受!

Public Class CustomDataAttribute : Inherits Attribute
    Private _name As String

    Public Sub New(ByVal name As String)
        Me.Name = name
    End Sub

    Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            Me._name = value
        End Set
    End Property
End Class


Public Class CustomClass
    <CustomDataAttribute(Name:="CustomField")> _ 
    Public Property CustomField()
    End Property
End Class
您将不得不使用Reflection来发现属性.在您的情况下,您将从PropertyInfo.GetCustomAttributes()获得它.

使用属性的难点在于找到合适的执行模型来实际使用它们.类似于编译器,设计器或序列化对象的类是明显的.属性的可用性从那里迅速下降.当您尝试使用实际需要虚拟属性的属性时,几乎总是错误的选择.检索属性值非常昂贵,比检索属性值要贵许多个数量级.只有当反射代码在人工时运行时(如编译器)或者与利益或开销(在任何类型的I / O操作中常见)相比成本微不足道时,才使用它们.

网友评论