我试图通过编写一个调用另一个项目的简单示例来学习如何使用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();
}
}
}
配置文件是:
当我运行控制台应用程序时,它输出" Ringo"。然后我将硬编码的名称更改为" Paul"并编译类库项目。现在我再次运行控制台应用程序(不重新编译它。它仍然说" Ringo"。如果我重新编译它会给出预期的答案但是我认为Spring.Net将自动更新代码而不必我做这一点。
我是否犯了编码错误,或者我对Spring应该在这里做什么的理解不正确?
答案 0 :(得分:0)
关于特定类的旧版本,它不是spring.net问题或错误。通常,环境问题可以通过您的应用程序实现。手动清理bin,了解是否有任何程序集的锁定(主要是包含该类的程序集)。
如果您的项目未标记为构建,或者引用未复制到您的构建/部署文件夹。
Spring.Net没有关于程序集的任何行为,它有一个容器,它执行关于实例的关系,设置所有配置,设置依赖关系,但从未对程序集做过任何事情。