Кстати, на своей практике я встречал интересный приём предназначенный, видимо, во избежании именно таких ситуаций.
X++:
#define.ClassName(MyClass)
class #ClassName extends RunBaseBatch
{
//...
}
static void main(Args args)
{
#ClassName className = new #ClassName ();
;
//...
}
Как видно после дублирования такого класса, достаточно изменить идентификатор лишь в одном месте, в значении макроса.