首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StructureMap -能够在运行时替换程序集

StructureMap -能够在运行时替换程序集
EN

Stack Overflow用户
提问于 2011-09-21 19:52:17
回答 2查看 859关注 0票数 0

示例:

控制台应用程序:

代码语言:javascript
复制
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();
    }
}

装配“接口”:

代码语言:javascript
复制
public interface ICalculator
{
    int Calculate(int a, int b);
}

大会“实施”:

代码语言:javascript
复制
internal class Calculator : ICalculator
{
    public int Calculate(int a, int b)
    {
        return a + b;
    }
}

程序集“执行”,此程序集应在运行时替换上面的程序集:

代码语言:javascript
复制
internal class Calculator : ICalculator
{
    public int Calculate(int a, int b)
    {
        return a * b;
    }
}

装配“救生器”

代码语言:javascript
复制
For<ICalculator>().Use<Calculator>();

我想在运行时替换具体的实现。这可以通过一个UpdateService来完成,它只是替换旧的程序集“实现”。

我遇到的问题是程序集“实现”被锁定。我不能换掉它。

我要怎么做才能做到这一点?

是IoC容器负责我的需求,还是我必须构建自己的基础设施?

编辑:

在web环境中,您可以轻松地替换程序集。我已经做得很成功了。

EN

回答 2

Stack Overflow用户

发布于 2011-09-21 20:40:05

恐怕你只能加载一个额外的程序集。

来自MSDN

不卸载包含程序集的所有应用程序域,就无法卸载单个程序集。即使程序集超出了作用域,实际程序集文件仍将继续加载,直到卸载包含它的所有应用程序域。

票数 2
EN

Stack Overflow用户

发布于 2011-09-21 19:58:07

我想这就是你要找的:

http://structuremap.net/structuremap/ChangingConfigurationAtRuntime.htm

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7505812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档