Из UITypeEditor извлеките атрибут, примененный к родительскому свойству в .net.
-
21-09-2019 - |
Вопрос
Это не так просто, как сказано в названии, но я надеюсь, вы понимаете.
Рассмотрим этот сценарий:
Class MyClass
Property SubProp1
End Property
-TypeEditor(whatever)-
Property SubProp2
End Property
End Class
Class MyButton
Inherits Button
-MyCustomAttribute-
Property MC as MyClass
End Property
End Class
Затем я помещаю экземпляр MyButton в сетку свойств, разворачиваю свойство MC и редактирую SubProp2.
Из редактора типов SubProp2 я хочу получить атрибут, примененный к свойству MC.
Глядя на контекст PropertyDescriptor.ComponentType, мы приходим к Типу:Мои занятия.Однако если я посмотрю на атрибуты, примененные к MyClass, он вернет только атрибуты, примененные непосредственно к MyClass, а не дополнительный атрибут, примененный к свойству MC.
Я изо всех сил пытаюсь вернуться в MC, чтобы прочитать примененные там атрибуты.У кого-нибудь есть идеи?
Расчетное время прибытия:
Я ответил на него ниже:
Решение 2
Собственно, в продолжение моего комментария Томасу, это возможно и без поздней привязки.Вот как:
DirectCast(context, GridItem).Parent.PropertyDescriptor.Attributes.
Вуаля!
Другие советы
Однако если я посмотрю на атрибуты, примененные к MyClass, он вернет только атрибуты, примененные непосредственно к MyClass, а не дополнительный атрибут, примененный к свойству MC.
Атрибут, добавленный в MC
свойство не «добавляется» к атрибутам, примененным к MyClass
сорт...атрибуты являются статическими метаданными, у вас не будет дополнительного атрибута MyClass
просто потому, что свойство типа MyClass
имеет этот атрибут.Между ними нет никакой связи.
MyClass не может получить атрибуты свойства MC, если только вы не получите их непосредственно из MyButton
класс, через размышление:
Dim prop As PropertyInfo = GetType(MyButton).GetProperty("MC")
Dim attributes As Attribute() = Attribute.GetCustomAttributes(prop)
Но вы не сможете получить эти атрибуты, используя TypeDescriptor
, поскольку он может предоставить вам только атрибуты, определенные для типа, а не для свойств.