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