2016-09-27 1 views
0

Мне нужно переопределить это свойство, чтобы я мог вернуть вычисленное значение. Я не ошибаюсь, но он не работает. Что я делаю не так? Любая помощь будет большой.VB.Net переопределить свойство

Это базовый класс. BalanceValue - это частный десятичный знак.

Public Overridable Property Balance() As Decimal 

    Get 
     Return balanceValue 
    End Get 

    Set(balance As Decimal) 
     If balance >= 0D Then 
      balanceValue = balance 
     Else 
      Throw New ArgumentOutOfRangeException("Balance must be greater than or equal to 0") 
     End If 
    End Set 

End Property 

Это производный класс.

Public Overrides Property Balance() As Decimal 
    Get 
     Return CDec(BalanceWithInterest) 
    End Get 

    Set(balance As Decimal) 
     MyBase.Balance = CDec(BalanceWithInterest) 
    End Set 
End Property 

Это то, что я хочу, чтобы вернуть

Public Function CalculateInterest(interestRate As Double) As Decimal 

    Return CDec(MyBase.Balance + (MyBase.Balance * interestRate)) 

End Function 
+0

Функция CalculateInterest намеренно не использует переопределенное свойство по какой-либо неопознанной причине. Используйте Me.Balance вместо MyBase.Balance. –

+0

Я сделал это, и он все еще не работает. Я понятия не имею, что я делаю неправильно. – LRoyster

+1

Поскольку вы возвращаете BalanceWithInterest, вам, вероятно, следует установить его: 'BalanceWithInterest = balance' – LarsTech

ответ

1

Я не совсем уверен, что вы ищете, но, может быть, попробуйте этот код. Я использую Shadows вместо ключевого слова Overrides, потому что параметры свойства различаются в производном классе, чем родительский.

Public Shadows Property Balance(interestRate As Double) As Decimal 
    Get 
     Return CDec(MyBase.Balance + (MyBase.Balance * interestRate)) 
    End Get 
    Set(balance As Decimal) 
     MyBase.Balance = CDec(balance/(1 + interestRate)) 
    End Set 
    End Property