Я сделал много Перегрузки метода, но теперь у меня есть экземпляр, где я хотел бы к Перегрузке Свойство. 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 позволяет мне сделать, я начинаю думать, что это не возможно?
К перегрузка что-то - метод или свойство - нужно, чтобы он принял другой набор параметров. Так как свойства в 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
Это невозможно. Фактически вы пытаетесь создать свойство, которое могло бы возвращать два разных типа. Система не может определить, что вы пытаетесь вызвать.
Каждому из них нужно будет дать уникальные имена свойств.
Вы пробовали использовать класс, основанный на интерфейсе? Тогда вы могли бы иметь различные классы, основанные на одном и том же общем интерфейсе и свойстве, связанном с типом интерфейса, а не на конкретном классе.
У FWIW I была та же проблема (CC.Net отключает Nant, который выполняет компиляцию, и NUnit), и мой выход NUnit также не появлялся на CC.Net. У меня уже была задача < слияние >
в моей задаче < издатель >
(и перед задачей < xmllogger >
) и ничего.
Одно, что я сделал не иметь, b/c я явно не нуждался, это был узел < workingDirectory >
в моем < project >
. Как только я добавил, что мой NUnit вывод появился сразу. Похоже, там есть зависимость по какой-либо причине. Надеюсь, это поможет некоторым из вас.
Я использую 5 + «»
, каждый раз, когда вы добавляете «»
(нет символа), он преобразует что угодно в последовательность и это легко запомнить.
Ваши подписи одинаковы (различаются только типы возврата). компилятор не будет знать, какой метод вы вызываете. Это твоя проблема. Измените подписи.
Перегрузка свойств невозможна. При этом можно добиться желаемого, создав неявные преобразования или перегрузив оператор =
.