Чтобы проверить, что именно ваш HandlerB был зарегистрирован, вы можете использовать Delegate.GetInvocationList () метод для получения соответствующей информации.
EDIT:
После комментария V4Vendetta я попытался скомпилировать код, но это не удалось. Я немного изменил это.
Чтобы сделать эту проверку, метод X должен быть добавлен к X (я предполагаю, что он статический, в противном случае используйте это вместо X):
public static void Test(Delegate delegateToTest)
{
if (X.EventX != null)
{
foreach (Delegate existingHandler in X.EventX.GetInvocationList())
{
if (existingHandler == delegateToTest)
{
// registered
}
}
}
}
А затем проверить откуда-нибудь, где доступен HandlerB:
X.Test(new EventHandler(HandlerB));