Из UITypeEditor извлеките атрибут, примененный к родительскому свойству в .net.

StackOverflow https://stackoverflow.com/questions/2105584

Вопрос

Это не так просто, как сказано в названии, но я надеюсь, вы понимаете.

Рассмотрим этот сценарий:

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, поскольку он может предоставить вам только атрибуты, определенные для типа, а не для свойств.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top