Тестирование указателя функции C # (делегата) на ноль - PullRequest
0 голосов
/ 12 февраля 2009

Я тестирую указатель функции ErrorLoggingMethod в C # DLL для предотвращения исключений из-за нулевого значения, как показано ниже, но кажется, что во время выполнения функция фактически выполняется, когда я действительно хочу проверить ее делегат на нулевое , В результате я случайно получаю нулевое исключение - именно то, чего я пытаюсь избежать! Моим первоначальным намерением было помочь программистам на случай, если они забудут установить этот делегат. Я хочу предоставить фиктивную функцию в таком случае. Если это не сработает, как я могу проверить, является ли делегат нулевым?

udt.DatabaseConnectionString = InteractiveDatabaseConnection.AddSQLConnection(udt.ErrorLoggingMethod != null ? udt.ErrorLoggingMethod : CMAC_DummyErrorLoggingMethod);

Ответы [ 2 ]

3 голосов
/ 12 февраля 2009

Вы уверены, что не получите исключение в результате udt, являющегося null? Вы не вызываете никакой функции в приведенном выше коде, вы передаете делегат методу AddSQLConnection.

0 голосов
/ 12 февраля 2009

Возможно, я не понимаю, о чем вы спрашиваете, но ... Если вы пытаетесь узнать, есть ли у делегата какие-либо методы в списке вызовов, вы можете просто проверить длину списка ...

if (ErrorLoggingMethod.GetInvocationList().Length(0) == 0){
    //Add your default handler to the delegate
}

Затем запустите метод AddSQLConnection ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...