Это даст Вам точно строки, которые Вы попросили:
string s = "String goes here";
string lineAlignedRight = String.Format("{0,27}", s);
string lineAlignedCenter = String.Format("{0,-27}",
String.Format("{0," + ((27 + s.Length) / 2).ToString() + "}", s));
string lineAlignedLeft = String.Format("{0,-27}", s);
Класс A
должен определять методы, которые он будет вызывать (возможно, как абстрактные, и A должен быть абстрактным классом, согласно превосходному руководству Пола Хаара ]); B
может (на самом деле, чтобы быть конкретным, ДОЛЖЕН, если метод является абстрактным) переопределить эти методы. Теперь вызовы этих методов из других методов в A
, когда они происходят в экземпляре класса B, переходят к переопределениям B.
Общий шаблон проектирования известен как Шаблонный метод ; методы, которые необходимо переопределить, часто называют «методами перехвата», а метод, выполняющий вызовы, - «методом организации».
Я бы не решился это сделать. Пожалуйста, поправьте меня, если я ошибаюсь, и тогда я удалю, но похоже, что вы хотите сохранить объект A вместе с объектом B. Если они действительно не являются одним и тем же объектом, «связать вместе» (это научный термин), который вам придется сделать, будет довольно некрасиво.