编辑: 我最好改写一下: 如何将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操作中常见)相比成本微不足道时,才使用它们.
