Почему не вызывается родительский метод? - PullRequest
0 голосов
/ 28 июня 2018

У меня есть класс B, который наследует класс A, оба находятся в C #. Они оба имеют свойство Value, класс A определяется так:

public object Value
{
     get 
     { [...] }
     set 
     { [...] }
}

Свойство класса B выглядит следующим образом:

public new decimal Value
{
    get
    { [...] }
    set
    { [...] }
}

Код ниже в VB, мы используем его так:

Dim var1 As new B
var1.Value = "abc"

Проблема в том, что вместо вызова свойства класса A, поскольку у класса B нет определения Value как строки, он пытается преобразовать строку в десятичную, прежде чем отправлять ее в свойство Value класса B. «abc» не является допустимым числом, оно выдает исключение, но я обработал это значение в свойстве Value класса A.

В любом случае, чтобы она не преобразовывала строку в десятичную и не вызывала свойство класса A вместо класса B?

1 Ответ

0 голосов
/ 28 июня 2018

Это из-за ключевого слова new здесь:

public new decimal Value

Использование new здесь полностью скрывает свойство A Value. Может быть, вы просто хотите overrides.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...