C#, встроенный пользовательский элемент управления WPF

Получил winform в проекте A (основной проект), который содержит пользовательский элемент управления wpf и поддерживается в другом проекте с именем B.

При нажатии кнопки на пользовательском элементе управления я хотел запросить сервер, который находится в проекте «C», получить данные и показать их на размещенном пользовательском элементе управления wpf. Я знаю, что это плохая практика кодирования - помещать ссылку на проект "C" в проект B, который включает только пользовательские элементы управления. Любые альтернативные варианты будут оценены...


person Anees    schedule 21.07.2011    source источник
comment
Можете ли вы быть немного более конкретным в том, что вы хотите сделать? Что вы пробовали?   -  person Filip Ekberg    schedule 21.07.2011
comment
в основном хотел показать некоторые данные о пользовательском управлении wpf, получив их с сервера.   -  person Anees    schedule 21.07.2011
comment
Почему вы считаете плохой практикой устанавливать зависимость, которая (очевидно) необходима для обеспечения требуемой функциональности?   -  person Dan Puzey    schedule 21.07.2011


Ответы (2)


Чтобы свести к минимуму зависимости проекта, создайте интерфейс в своем проекте элемента управления (B), отражающий операции, требуемые вашим элементом управления.

Реализуйте в своем клиентском (A) проекте класс, реализующий этот интерфейс (который будет получать необходимую информацию из вашего проекта данных (C) и передавать ее обратно через метод интерфейса).

Передайте класс службы (реализующий интерфейс), созданный в A, вашему элементу управления B при инициализации элемента управления.

person Bahri Gungor    schedule 21.07.2011

Вы создаете еще один проект, который представляет собой просто библиотеку классов, которую можно использовать во всех трех проектах. Вы поместите интерфейсы и/или реализации классов, которые должны быть общими между проектами в библиотеке классов, а затем просто используете их на сервере и в проектах пользовательского управления.

person James J. Regan IV    schedule 21.07.2011