Такое правило почти невозможно написать, за исключением самых тривиальных случаев. Например, если вы хотите, чтобы метод init init B вызывался сразу после вызова конструктора B, это можно сделать относительно легко (хотя логика ветвления может вызвать проблемы даже там). Тем не менее, не было бы особой необходимости в отдельном методе init, если бы он был необходим только для поддержки такого тривиального использования. Обычно интереснее обнаруживать случаи, когда кто-то пытается сделать что-то еще с экземпляром B, прежде чем вызывать его метод init, и это не совсем работа для статического верификатора, такого как FxCop.
Рассматривали ли вы создание исключения из B, если оно не инициализировано при входе в другой метод (так же, как можно генерировать исключение ObjectDisposedException из удаленного экземпляра)?