Использование IExtenderProvider и ProvideProperty с пользовательскими классами
Я реализовал компонент, который наследуется от IExtenderProvider, чтобы расширить любой элемент управления в форме. Он отлично работает для базовых типов, таких как String или Integer. Теперь я хотел бы сгруппировать предоставленные свойства в один класс. Я создал класс и использую ProvideProperty, чтобы сделать его доступным для элементов управления. Свойство отображается в конструкторе, но я не могу развернуть его, чтобы редактировать открытые свойства класса.
Вот небольшой пример кода (vb.net), чтобы проиллюстрировать, что я сделал (DynamicCaptionInfo - это пользовательский класс, который я хотел бы использовать для предоставленного свойства):
<ProvideProperty("CustomCaption", GetType(Control))> _
Public Class DynamicCaptionController
Implements IExtenderProvider
Private _CaptionInfos As Hashtable
<System.Diagnostics.DebuggerNonUserCode()> _
Public Sub New()
MyBase.New()
'Dieser Aufruf ist für den Komponenten-Designer erforderlich.
InitializeComponent()
_CaptionInfos = New Hashtable()
End Sub
Public Function CanExtend(extendee As Object) As Boolean Implements IExtenderProvider.CanExtend
Return TypeOf (extendee) Is Control
End Function
Public Function GetCustomCaption(ByVal ctrl As Control) As DynamicCaptionInfo
Return _CaptionInfos(ctrl)
End Function
Public Sub SetCustomCaption(ByVal ctrl As Control, ByVal value As DynamicCaptionInfo)
If value Is Nothing Then
_CaptionInfos.Remove(ctrl)
Else
_CaptionInfos(ctrl) = value
End If
End Sub
Public Class DynamicCaptionInfo
Public Property DefaultCaption As String
Public Property CustomCaption As String
Public Sub New()
DefaultCaption = ""
CustomCaption = ""
End Sub
End Class
End Class
Приведенный выше код работает, если я заменяю, например, String на DynamicCaptionInfo.
Спасибо за помощь.