Пример:
Консольное приложение:
class Program
{
static void Main(string[] args)
{
var calculator = ObjectFactory.GetInstance<ICalculator>();
for (var i = 0; i < 10; i++)
{
Console.WriteLine(calculator.Calculate(10, 5));
Console.ReadLine();
}
Console.ReadLine();
}
}
Сборка "Интерфейс":
public interface ICalculator
{
int Calculate(int a, int b);
}
Сборка "Реализация":
internal class Calculator : ICalculator
{
public int Calculate(int a, int b)
{
return a + b;
}
}
Сборка "Реализация", эта сборка должна заменить сборку, указанную выше во время выполнения:
internal class Calculator : ICalculator
{
public int Calculate(int a, int b)
{
return a * b;
}
}
Сборка "Resolver"
For<ICalculator>().Use<Calculator>();
Я хочу заменить конкретную реализацию во время выполнения.Это может быть сделано с помощью UpdateService, который просто заменит старую сборку «Реализация».
У меня проблема в том, что сборка «Реализация» заблокирована.Я не могу заменить его.
Что мне нужно сделать, чтобы достичь этого?
Контейнер IoC отвечает за мои требования или я должен построить свою собственную инфраструктуру?
РЕДАКТИРОВАТЬ:
В веб-среде вы можете легко заменить сборку.Я сделал это уже с успехом.