Использование DI для добавления новых уравнений для расчета с использованием 2 чисел - PullRequest
1 голос
/ 20 апреля 2009

Я работаю над программой, в которой я хочу добавить функциональность с помощью DI, C #, поэтому я создам пример, чтобы проверить, возможно ли это.

У меня есть программа, в которую пользователь вводит любые два числа. Затем программа просматривает все плагины в XML-файле и использует те классы, которые вводятся для вычисления с этими двумя числами.

Итак, я создаю два класса, Add и Subtract. Я вставил их и запустил мою программу.

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

Теперь кто-то другой пишет «Умножить», помещает его в каталог, обновляет XML-файл, и в следующий раз, когда я запускаю свою программу с двумя числами, получаются три результата.

Теперь я не знаю, сколько будет плагинов.

Есть ли способ в C #, используя DI, чтобы я мог получить этот тип функциональности?

Я не знаю, возможно ли это.

Я пытаюсь понять это, поскольку я хочу показать способ построения графиков для некоторых данных, используя различные типы графиков, но я думаю, что использование подхода бинарных уравнений упрощает объяснение, я думаю.

Я мог бы сделать это, вручную загрузив класс, на который есть ссылка в файле xml, чтобы это можно было сделать, но я хотел бы, чтобы структура зависимостей позаботилась о тяжелой работе для меня.

Обновление: я надеюсь использовать для этого инфраструктуру Unity.

1 Ответ

2 голосов
/ 20 апреля 2009

Вы можете предоставить интерфейс (например, IMathOperation, с помощью одного метода, такого как Compute), а затем указать типы, реализующие интерфейс (Add, Subtract и т. Д.), В файле конфигурации инфраструктуры DI. Каркасы DI обычно позволяют вам указывать имя сборки, а также имя типа, и они также обычно хороши для создания коллекций схожих типов, так что вы можете иметь один тип, у которого есть свойство или параметр конструктора типа IList<IMathOperation>. Задайте это свойство / параметр в конфигурационном файле, и все будет хорошо.

Точные детали, конечно, будут зависеть от структуры DI, которую вы хотите использовать.

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