Spring.Net:客户端引用以前版本的类

时间:2015-02-16 18:27:02

标签: .net spring.net

我试图通过编写一个调用另一个项目的简单示例来学习如何使用Spring.Net。

要调用的项目是一个包含单个类及其相应接口的类库项目:

public class ClassToBeConsumed : IClassToBeConsumed
{
    public string GetName()
    {
        return "Ringo";
    }
}

public interface IClassToBeConsumed
{
    string GetName();
}

现在在一个单独的项目中,我有一个控制台应用程序。在这里我试图使用Spring.Net与第一个项目形成耦合。

我在这个项目中的单个课程如下:

namespace ClientApp
{
class Program
{
    static void Main(string[] args)
    {
        // Get the context
        IApplicationContext applicationContext = ContextRegistry.GetContext();

        // Get the instance through Spring
        ClassToBeConsumed.IClassToBeConsumed _classToBeConsumed = (ClassToBeConsumed.IClassToBeConsumed) applicationContext["consumed"];

        string name= _classToBeConsumed.GetName();

        Console.WriteLine(name);
        Console.ReadLine();
    }
}
}

配置文件是:

enter image description here

当我运行控制台应用程序时,它输出" Ringo"。然后我将硬编码的名称更改为" Paul"并编译类库项目。现在我再次运行控制台应用程序(不重新编译它。它仍然说" Ringo"。如果我重新编译它会给出预期的答案但是我认为Spring.Net将自动更新代码而不必我做这一点。

我是否犯了编码错误,或者我对Spring应该在这里做什么的理解不正确?

1 个答案:

答案 0 :(得分:0)

关于特定类的旧版本,它不是spring.net问题或错误。通常,环境问题可以通过您的应用程序实现。手动清理bin,了解是否有任何程序集的锁定(主要是包含该类的程序集)。

如果您的项目未标记为构建,或者引用未复制到您的构建/部署文件夹。

Spring.Net没有关于程序集的任何行为,它有一个容器,它执行关于实例的关系,设置所有配置,设置依赖关系,但从未对程序集做过任何事情。