Можно ли иметь общее свойство по умолчанию в VB.NET? - PullRequest
2 голосов
/ 09 марта 2011

Я пытаюсь сделать следующее:

Default Public Property Data(Of dataType)(ByVal key As String) As dataType
  Get
    Return DirectCast(values.Item(key), dataType)
  End Get
  Set(ByVal value As dataType)
    values.Item(key) = value
  End Set
End Property

значения имеют тип Dictionary (Of String, Object), но у нас есть другой словарь поиска с типами данных, связанных с ключами.Конечно, это отказывается компилироваться с волнистой линией под (Of dataType) из-за:

Type parameters can not be specified on this declaration.

Это невозможно, или я просто делаю это неправильно?я пытаюсь сделать это свойство, так что мне не нужно делать следующее.

Public Function GetData(Of dataType)(ByVal key As String) As dataType
  Return DirectCast(values.Item(key), dataType)
End Function

Public Sub SetData(ByVal key As String, ByVal value As Object)
  values.Item(key) = value
End Sub

Имеет смысл сделать его свойством, и это будет свойство по умолчанию класса,Тип данных не может быть указан при создании экземпляра класса, поскольку он может содержать несколько объектов различных типов данных.

1 Ответ

2 голосов
/ 09 марта 2011

Нет, я думаю, что общие свойства невозможны (и не будут) возможны в .Net. В этом ответе поясняется, почему компилятор должен знать тип во время компиляции: Могу ли я иметь обобщенные значения в свойстве класса?

[скопировано из комментариев]

...