示例:
控制台应用程序:
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;
}
}装配“救生器”
For<ICalculator>().Use<Calculator>();我想在运行时替换具体的实现。这可以通过一个UpdateService来完成,它只是替换旧的程序集“实现”。
我遇到的问题是程序集“实现”被锁定。我不能换掉它。
我要怎么做才能做到这一点?
是IoC容器负责我的需求,还是我必须构建自己的基础设施?
编辑:
在web环境中,您可以轻松地替换程序集。我已经做得很成功了。
发布于 2011-09-21 20:40:05
恐怕你只能加载一个额外的程序集。
来自MSDN:
不卸载包含程序集的所有应用程序域,就无法卸载单个程序集。即使程序集超出了作用域,实际程序集文件仍将继续加载,直到卸载包含它的所有应用程序域。
发布于 2011-09-21 19:58:07
我想这就是你要找的:
http://structuremap.net/structuremap/ChangingConfigurationAtRuntime.htm
https://stackoverflow.com/questions/7505812
复制相似问题