Я пытаюсь научиться использовать 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();
}
}
}
Файл конфигурации является:
Когда я запустить приложение консоли Это выводит «Ринго». Затем я меняю жестко заданное имя на «Пол» и компилирую проект библиотеки классов. Теперь я снова запускаю консольное приложение (не перекомпилируя его, он все еще говорит «Ринго» .Если я перекомпилирую его, он дает ожидаемый ответ, однако я думал, что Spring.Net будет автоматически обновлять код без необходимости делать это.
Я сделал ошибку кодирования или мое понимание того, что весна должна делать здесь неправильно?
Ну, это не имеет никакого отношения к spring.net. Вы скопировали встроенную DLL в папку, в которой находится консольное приложение? Если у вас было несколько классов, реализующих «IClassToBeConsumed», вы могли бы выбрать, какой из них разрешить во время выполнения, изменив конфигурацию приложения консолей. – tobsen