Spring.net не ищет определение в родительском контейнере

В моем проекте у меня есть 2 конфигурации для весны, одна в коде и одна в XML. Контекст кода загрузит объекты-макеты, определенные в классе MockConfigurations. Конфигурация xml определена в app.config. Я устанавливаю конфиг xml как родительский конфиг кода.

public static IApplicationContext GetMergedContainer()
{
    var scanner = new AssemblyObjectDefinitionScanner();
    scanner.IncludeType<MockConfigurations>();

    var context = new CodeConfigApplicationContext(ContextRegistry.GetContext());
    context.Scan(scanner);
    context.Refresh();
    return context;
}

В весенней документации ( http://www.springframework.net/doc-latest/reference/html/web.html) говорится: если определение ссылочного объекта не найдено в текущем контексте, Spring.NET ищет все контексты предка в контекстной иерархии до тех пор, пока не найдет определение объекта (или, в конечном счете, произойдет сбой и возникнет исключение).

Это не работает для меня:

var element = GetMergedContainer().GetObject<IElement>(); 

throws Spring.Objects.Factory.NoSuchObjectDefinitionException: Объект с именем '[Namespace].IElement' не определен: запрошенный тип не определен в контексте.

Работает ли получение объекта от родителя нормально:

var element = GetMergedContainer().ParentContext.GetObject<IElement>(); 

Я что-то пропустил? Кто-нибудь преуспел в установке контекста XML в качестве родителя контекста кода?

Любая помощь будет оценена.

Заранее спасибо.

Я использую Spring.Core.1.3.2 и Spring.CodeConfig.1.0.4

[ОБНОВИТЬ]

Я воссоздаю ситуацию с помощью более простого кода ( http://www.springframework.net/codeconfig/refdoc/migration-example.html)

Я снова поставил XML-конфигурацию в качестве родительского для конфигурации кода и попытался разрешить объект из контекста кода, который существует только в контексте XML (родительского).

Это работает:

ConsoleReport report = ctx["ConsoleReport"] as ConsoleReport;
ConsoleReport report = ctx.GetObject("ConsoleReport") as ConsoleReport;

Это не удается:

ConsoleReport report = ctx.GetObject<ConsoleReport>();

Ошибка заключается в следующем:

Spring.Objects.Factory.NoSuchObjectDefinitionException не обработан. Сообщение = Объект с именем 'Spring.Evaluation.ConsoleReport' не определен: Запрошенный тип не> Определен в контексте. Source=Spring.Core.Configuration ObjectName=Spring.Evaluation.ConsoleReport StackTrace: at Spring.Context.ApplicationContextExtensions.GetObject[T](контекст IApplicationContext) в c:_prj\spring-net-codeconfig\src\Spring.Core.Configuration\Context\Extension\ApplicationContextExtensions.cs: строка 69 в Spring.Evaluation.Program.Main(String[] args) в каталоге c:\users\oscar\documents\visual studio 2010\Projects\Spring.Evaluation\Spring.Evaluation\Program.cs: строка 16 в System.AppDomain._nExecuteAssembly(сборка RuntimeAssembly, аргументы String []) в System.AppDomain.ExecuteAssembly(аргументы String assemblyFile, Evidence assemblySecurity, String[]) в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsers. System. k обратный вызов, состояние объекта) в System.Threading.ThreadHelper.ThreadStart ()

Я пытаюсь добавить конфигурацию кода в проект (немного большой), который использует более поздний подход, и я бы очень хотел сохранить все эти строки кода такими, какие они есть.

0 ответов

Другие вопросы по тегам