Методы расширения для Object, но не производные классы - PullRequest
0 голосов
/ 14 декабря 2018

Можно создать метод расширения для Object, но не иметь возможности использовать его в каком-либо производном классе?

Зачем нужны некоторые общие утилиты для преобразования объектов в определенные типы, обрабатывающие общие исключения.Ej.метод для преобразования объекта в строку, но с заменой нуля на пустую строку и обрезкой пробелов.

object obj = ...
// I want to use de the method when the object is 'casted' as 'object':
string strValue = obj.ToStringTrim();
// But not be able to use it in any subclass. Ej. en this string:
strValue.ToStringTrim();

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

РЕДАКТИРОВАТЬ

Я знаю, что это против наследования, но я просто хотел взломать, синтаксическийсахар или что-то еще ... И уже существует в C #;).И почему это проблема?Ну, это на самом деле не проблема, но я не хочу, чтобы на автозаполнении было так много раздувания

1 Ответ

0 голосов
/ 14 декабря 2018

Нет, это невозможно, потому что не так работает наследование.Строка является объектом.Период!Но почему это проблема?Не используйте это расширение со строкой, если вы не хотите.

Однако метод расширения может быть реализован следующим образом:

public static string ToStringTrim(this Object obj)
{
    return obj?.ToString().Trim() ?? "";
}

Если obj уже является string, то это запрет, поскольку String.ToString реализован как return this.

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