Так что, надеюсь, это глупый вопрос (на него легко ответить).
Я пытаюсь создать составной серверный элемент управления, который инкапсулирует TextBox, некоторые валидаторы и другие элементы, в зависимости от требуемого типа поля.
Мой элемент управления имеет значение «Тип данных», которое позволяет мне определить, что отображать. Например, если DataType имеет значение «Date», я отображаю AjaxControlToolkit.CalendarExtender и т. Д.
Мое общее свойство "Value" является объектом и будет возвращать то, что требует свойство DataType, поэтому в приведенном выше примере значение будет иметь тип Date.
Итак, вот моя проблема, мне нужно преобразовать входящее свойство Value во все, что DataType требует во время выполнения.
Как вы можете видеть, я пытался написать TypeConverter для него, но, похоже, он не работает, я получаю эту ошибку во время компиляции:
Невозможно сгенерировать код для значения типа 'System.Object'. Эта ошибка произошла при попытке создать значение свойства для значения.
Любая помощь будет высоко ценится!
Вот как я пытаюсь вызвать свой контроль:
<custom:SomeTextControl ID="dateFoo" runat="server" DataType="Date" Value="08/11/2009" />
Вот мой класс:
Public Class SomeTextControl
Inherits Control
Private _Value as Object
<Bindable(True), TypeConverter(GetType(ObjectConverter))> _
Public Property Value() As Object
Get
Return _Value
End Get
Set(ByVal value As Object)
_Value = value
End Set
End Property
End Class
Public Class ObjectConverter
Inherits TypeConverter
Public Overrides Function ConvertFrom(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal culture As System.Globalization.CultureInfo, ByVal value As Object) As Object
Dim o As Object
o = value
Return o
End Function
Public Overrides Function CanConvertFrom(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal sourceType As System.Type) As Boolean
If sourceType Is GetType(String) Then
Return True
End If
Return MyBase.CanConvertFrom(context, sourceType)
End Function
Public Overrides Function CanConvertTo(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal destinationType As System.Type) As Boolean
If destinationType Is GetType(String) Then
Return True
End If
Return MyBase.CanConvertTo(context, destinationType)
End Function
End Class