В дополнение к тому, что предлагает Арсений, вы можете «подделать расширение класса», добавив так называемые методы расширения.В качестве примера вы можете расширить строку следующим образом:
public static class StringExtensions
{
public static string Affix(this string source, string prefix, string suffix)
{
return string.Format("{0}{1}{2}", prefix, source, suffix);
}
}
, которая использует только открытые данные для класса, который расширяет, и поэтому не нарушает договор о том, чтобы не изменять чей-либо другой класс без владения исходным кодом,Но он добавляет синтаксический сахар, позволяющий вам вызывать класс так, как будто вы его действительно изменили, например:
string myString = "MyString";
string result = myString.Affix("Before", "After");
// result contains "BeforeMyStringAfter"