Существует ли аналог функции defineProperty в C#?

Object.defineProperty(
  Object.prototype,
  'reverse',
  {
    value: function () {
      if (this instanceof String) {
        let s = '';
        for (i = 0; i < this.length; i++) {
          s += this[(this.length -1) - i];
        }
        s = s.charAt(0).toUpperCase() +
        s.slice(1, this.length -1) +
        s.charAt(this.length -1).toLowerCase();
        return s;
      }
    }
  }
);

var str = 'Едрить';
var str2 = 'Идем молод , долом меди';
console.log(`${str.reverse()}\n${str2.reverse()}`);

Можно ли повторить этот код в C# без килотонны классов? Если да, то как?


Ответы (1 шт):

Автор решения: Uranus

В C# тоже есть возможность добавлять новые методы не изменяя классов: Extension Methods.

public static class MyExtensions {
  public static string Reverse(this string original) {
    // ...
  }
}
string str = "abc".Reverse();
→ Ссылка