Откровенно говоря, я ничего не понял, но попробую что-то ответить :)
Вижу два варианта.
1. Есть одна сборка, внутри которой находится куча кнопок. К примеру (к примеру!), первая кнопка - устанавливает соединение с БД, вторая кнопка - пересылает данные, третья кнопка - соединение закрывает.
Такое можно реализовать с помощью статических классов/методов или же паттерна Singleton.
2. Кнопки находятся в разных сборках. Установка соединения в одной dll, пересылка данных - в другой, закрытие соединения - в третьей. В этом случае, при нажатии, например, на вторую кнопку, мы должны найти первую кнопку и вызвать в ней произвольный (!) метод (не объявленный в ICommand), название и сигнатуру которого мы заранее знаем, который вернет нам активное соединение. Т.е. без использования явной сериализации в общую память (оперативной, hdd), а именно вызовом метода. Как такое сделать - мне самому интересно, присоединяюсь к вопросу :-)