2015-02-16 4 views
0

Я пытаюсь научиться использовать 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

Когда я запустить приложение консоли Это выводит «Ринго». Затем я меняю жестко заданное имя на «Пол» и компилирую проект библиотеки классов. Теперь я снова запускаю консольное приложение (не перекомпилируя его, он все еще говорит «Ринго» .Если я перекомпилирую его, он дает ожидаемый ответ, однако я думал, что Spring.Net будет автоматически обновлять код без необходимости делать это.

Я сделал ошибку кодирования или мое понимание того, что весна должна делать здесь неправильно?

+1

Ну, это не имеет никакого отношения к spring.net. Вы скопировали встроенную DLL в папку, в которой находится консольное приложение? Если у вас было несколько классов, реализующих «IClassToBeConsumed», вы могли бы выбрать, какой из них разрешить во время выполнения, изменив конфигурацию приложения консолей. – tobsen

ответ

0

О старой версии определенного класса, это не проблема или ошибка Spring.net. Обычно проблемы с окружающей средой могут сделать это с вашей приложения. Очистка вручную вашего бункера, чтобы понять, есть ли какой-либо замок любой сборки (прежде всего сборка, которая содержит этот класс).

Если ваш проект не был помечен для сборки, настройки не копируются в вашу папку сборки/развертывания.

У Spring.Net нет никакого поведения об установках с контейнером, который выполняет отношения с экземплярами, настраивает все настроенные, настраивает ваши зависимости, но ничего не делает о ваших сборках.