void Execute(SqlConnection sqlConnection, SqlTransaction transaction, List data);
но один обработчик принимает еще один параметр, и я пытаюсь найти лучший способ сделать это.
Моей лучшей идеей было просто создать еще один интерфейс и проверьте тип в основной функции, но это выглядит немного грязно
[code] public class Config { static Dictionary dictionary = new Dictionary() { { 0, new Handler() }, { 1, new Handler() }, { 2, new SecondHandler() } };
public static IHandler Get(int id) { return dictionary[id].handler; } }
class SecondHandler : Handler, IHandlerSecond { public void Execute(SqlConnection sqlConnection, IConnection connection, SqlTransaction transaction, List data) { base.Execute(sqlConnection, connection, transaction); ... } }
void Main(IConnect connect) { // Some code
var handler = Config.Get(num); if(handler is IHandlerSecond) { (handler as IHandlerSecond).Execute(connect, iconnection, transaction, data); } else if (handler is IHandler) { (handler as IHandler).Execute(connect, transaction, data); } } [/code] Так выглядит базовая подпись [code] void Execute(SqlConnection sqlConnection, SqlTransaction transaction, List data); [/code] но один обработчик принимает еще один параметр, и я пытаюсь найти лучший способ сделать это. Моей лучшей идеей было просто создать еще один интерфейс и проверьте тип в основной функции, но это выглядит немного грязно