Унаследованный класс .Net ToString не переопределяет - PullRequest
0 голосов
/ 19 октября 2010

Я создал унаследованный класс «StorageMedium» из базы, которую я назвал «DataTypes». StorageMedium имеет два свойства: Name () и Capacity ().

В объекте DataTypes, от которого унаследованы все другие объекты в библиотеке классов, я исключил функции Equals, ReferenceEquals, GetHashCode, ToString и GetType, поэтому эти функции не доступны для просмотра в редакторе Visual Studio.

Цель заключается в том, что библиотека классов в конечном итоге будет использоваться пользователями, не являющимися "программистами", и я хочу скрыть любой ненужный код или функции, с которыми они могут столкнуться.

У меня есть второй класс, который «создает» экземпляры StorageMedium:

    Shared ReadOnly Property DVD() As StorageMedium
        Get
            Return New StorageMedium(NewMedium.DVD)
        End Get
    End Property

    Shared ReadOnly Property CD() As StorageMedium
        Get
            Return New StorageMedium(NewMedium.CD)
        End Get
    End Property

На моей веб-странице я хочу вызвать класс создания, создать экземпляр StorageMedium и отобразить имя и емкость в виде строки с именем и мощностью

  Response.Write(StorageMedium.Utils.DVD)
  DVD: 4.7Gb

Однако, когда я использую метод Response.Write, он отображает полное имя класса

  Response.Write(StorageMedium.Utils.DVD)
  LC.Utils.Convert.Computer.DataType.StorageMedium

Справедливо предположить, что это, вероятно, вызвано подавлением базовых функций Объекта, однако есть ли способ «подцепить» или воссоздать функцию по умолчанию, чтобы использовать функциональность ToString без создания свойства, такого как «ToOutput» в отобразить объект как требуется?

Спасибо.

1 Ответ

1 голос
/ 19 октября 2010

Вы можете попробовать это:

public class StorageMedium {
    // Other code
    public static implicit operator String(StorageMedium instance) {
        return "StorageMedium"; // Or whatever string you prefer
    }
}

Хотя переопределение ToString () очевидно предпочтительнее.

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