Есть ли путь к Перегрузке Свойство в.NET

Я сделал много Перегрузки метода, но теперь у меня есть экземпляр, где я хотел бы к Перегрузке Свойство. IDE в Visual Studio, кажется, позволяет его, так как я могу на самом деле настроить эти две перегрузки, но я получаю ошибку при высказывании, что это не допустимо, потому что они только отличаются по типу. Я думаю, что пропускаю что-то в своем синтаксисе?

Я хочу быть в состоянии использовать два (или больше) различные пользовательские классы как Тип для моего свойства.

Public Overloads Property myFlexibleProperty() As myCustomClass1
      Get
         Return _myFlexibleProperty1
      End Get
      Set(ByVal value As myCustomClass1)
         _myFlexibleProperty1 = value
      End Set
   End Property

   Public Overloads Property myFlexibleProperty() As myCustomClass2
      Get
         Return _myFlexibleProperty2
      End Get
      Set(ByVal value As myCustomClass2)
         _myFlexibleProperty2 = value
      End Set
   End Property

Вся справка, которую я нашел до сих пор, касалась Методов Перегрузки. Несмотря на какой IDE позволяет мне сделать, я начинаю думать, что это не возможно?

14
задан GSTD 10 February 2010 в 15:37
поделиться

5 ответов

К перегрузка что-то - метод или свойство - нужно, чтобы он принял другой набор параметров. Так как свойства в VB.NET могут принимать параметры, то, наверное, их можно перегрузить, но они должны быть разными.

Так что можно сделать так:

Public Overloads Readonly Property Average() As Double
Public Overloads Readonly Property Average(ByVal startIndex As Integer) As Double

Но не так:

Public Overloads Readonly Property Average() As Double
Public Overloads Readonly Property Average() As Decimal
18
ответ дан 1 December 2019 в 12:26
поделиться

Это невозможно. Фактически вы пытаетесь создать свойство, которое могло бы возвращать два разных типа. Система не может определить, что вы пытаетесь вызвать.

Каждому из них нужно будет дать уникальные имена свойств.

2
ответ дан 1 December 2019 в 12:26
поделиться

Вы пробовали использовать класс, основанный на интерфейсе? Тогда вы могли бы иметь различные классы, основанные на одном и том же общем интерфейсе и свойстве, связанном с типом интерфейса, а не на конкретном классе.

1
ответ дан 1 December 2019 в 12:26
поделиться

У FWIW I была та же проблема (CC.Net отключает Nant, который выполняет компиляцию, и NUnit), и мой выход NUnit также не появлялся на CC.Net. У меня уже была задача < слияние > в моей задаче < издатель > (и перед задачей < xmllogger > ) и ничего.

Одно, что я сделал не иметь, b/c я явно не нуждался, это был узел < workingDirectory > в моем < project > . Как только я добавил, что мой NUnit вывод появился сразу. Похоже, там есть зависимость по какой-либо причине. Надеюсь, это поможет некоторым из вас.

-121--3384242-

Я использую 5 + «» , каждый раз, когда вы добавляете «» (нет символа), он преобразует что угодно в последовательность и это легко запомнить.

-121--3770409-

Ваши подписи одинаковы (различаются только типы возврата). компилятор не будет знать, какой метод вы вызываете. Это твоя проблема. Измените подписи.

1
ответ дан 1 December 2019 в 12:26
поделиться

Перегрузка свойств невозможна. При этом можно добиться желаемого, создав неявные преобразования или перегрузив оператор =.

0
ответ дан 1 December 2019 в 12:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: