Spec-Zone .ru
спецификации, руководства, описания, API

22.2.5.11. Используя Классы Перехватчика Соединителя/Сети

Перехватчик является образцом проектирования программного обеспечения, который обеспечивает прозрачный способ расширить или изменить некоторый аспект программы, подобной пользовательскому выходу. Никакая перекомпиляция не требуется. С Соединителем/Сетью перехватчики включаются и отключаются, обновляя строку подключения, чтобы обратиться к различным наборам классов перехватчика, которых Вы инстанцируете.

Соединитель/Сеть включает следующие классы перехватчика:

Вот примеры использования FQN (полностью определенное имя) на строке подключения:

MySqlConnection c1 = new MySqlConnection(@"server=localhost;pooling=false;commandinterceptors=CommandApp.MyCommandInterceptor,CommandApp");MySqlConnection c2 = new MySqlConnection(@"server=localhost;pooling=false;exceptioninterceptors=ExceptionStackTraceTest.MyExceptionInterceptor,ExceptionStackTraceTest");

В этом примере вызывают перехватчик команды CommandApp.MyCommandInterceptor и существует в CommandApp блок. Перехватчик исключения вызывают ExceptionStackTraceTest.MyExceptionInterceptor и существует в ExceptionStackTraceTest блок.

Чтобы сократить строку подключения, можно зарегистрировать свои перехватчики исключения в Вашем app.config или web.config файл как это:

<configSections><section name="MySQL" type="MySql.Data.MySqlClient.MySqlConfiguration, MySql.Data"/></configSections><MySQL><CommandInterceptors>  <add name="myC" type="CommandApp.MyCommandInterceptor,CommandApp" /></CommandInterceptors></MySQL><configSections><section name="MySQL" type="MySql.Data.MySqlClient.MySqlConfiguration, MySql.Data"/></configSections><MySQL><ExceptionInterceptors>  <add name="myE" type="ExceptionStackTraceTest.MyExceptionInterceptor,ExceptionStackTraceTest" /></ExceptionInterceptors></MySQL>

Как только Вы сделали это, Ваши строки подключения могут быть похожими на них:

MySqlConnection c1 = new MySqlConnection(@"server=localhost;pooling=false;commandinterceptors=myC");MySqlConnection c2 = new MySqlConnection(@"server=localhost;pooling=false;exceptioninterceptors=myE");