Для всех намерений и целей приватный метод не существует для кода вне класса, который его содержит. Это можно найти с помощью рефлексии, но ... весь смысл частного видения - это то, что не является частью API объектов. Закрытый член явно не является частью контракта объектов, это что-то инкапсулированное в нем.
Почему вы пытаетесь заставить других разработчиков "следовать стилю кодирования" до этого уровня детализации? Какова цель или желаемый результат?
Говоря об этом с другой стороны, вы пару раз говорили, что хотите "убедиться, что метод реализован" или что-то в этом роде.
Если вы хотите воздействовать на сигнатуру конкретного метода и убедиться, что он реализован, вы можете использовать делегат / Func / Action и добавить внешний код в соответствующую реализацию. Ваш внутренний код может проверить, предоставлен ли он, и вызвать его. Вы знаете, что существует метод для обработки вызова, поскольку вам была предоставлена ссылка на него ... т.е. Вы знаете, что где-то был реализован соответствующий метод.
Если у вас прямая ситуация и вы переходите от внутренней логики к внешней, вы можете просто использовать события. Создайте свои аргументы событий, которые будут содержать все, что вам нужно предоставить присоединенным обработчикам, используйте универсальный обработчик событий и объявите событие в вашей внутренней логике, которое вы вызовете, если оно не равно нулю, когда вам нужно передать управление реализованному методу внешней логики. Внешняя логика перехватывает событие обычным способом и делает все, что подходит для его использования. Модель событий является контрактной, очень естественной для .NET, широко используется, проста в использовании, и многие разработчики хорошо знакомы с шаблоном и знают, как его использовать.
"Частный" метод контракта, на который вы намереваетесь, вряд ли принесет вам плоды и, по моему мнению, противоречит ОО-проекту.
Удачи!