2011-12-28 3 views
1

Unity 2에 NServiceBus 3.0.0 베타 2 사전 출시 객체 빌더를 사용하는 동안 다음 오류가 발생합니다. 추적 할 수있는 한 표시됩니다. AutowireEnabledInjectionProperty 빌더의 CommonObjectBuilder에 문제점이 있습니다. 다음과 같이 NSB에 대한NServiceBus 3 객체 빌더를 사용하여 Unity 2 컨테이너를 해결하는 문제

구성은 다음과 같습니다

public class NServiceBusContainerExtension : UnityContainerExtension 
{ 
    protected override void Initialize() 
    { 
     var busConfig = NServiceBus.Configure.WithWeb() 
      .Log4Net() 
      .UnityBuilder(Container) 
      .MsmqTransport() 
       .IsTransactional(true) 
       .PurgeOnStartup(false) 
      .XmlSerializer() 
      .UnicastBus(); 

     var bus = busConfig 
        .CreateBus() 
        .Start(); 

     Container.RegisterType<IPublisher, NServiceBusPublisher>(new InjectionConstructor(bus)); 
    } 
} 

오류 :

[ArgumentNullException: Value cannot be null. 
Parameter name: typeToCreate] 
    Microsoft.Practices.Unity.Utility.Guard.ArgumentNotNull(Object argumentValue, String argumentName) +55 
    NServiceBus.ObjectBuilder.Unity.AutowireEnabledInjectionProperty.AddPolicies(Type typeToCreate, Type implementationType, String name, IPolicyList policies) +87 
    Microsoft.Practices.Unity.UnityContainer.RegisterType(Type from, Type to, String name, LifetimeManager lifetimeManager, InjectionMember[] injectionMembers) +405 
    Microsoft.Practices.Unity.InjectedMembers.ConfigureInjectionFor(Type serviceType, Type implementationType, String name, InjectionMember[] injectionMembers) +66 
    Microsoft.Practices.Unity.InjectedMembers.ConfigureInjectionFor(Type typeToInject, InjectionMember[] injectionMembers) +22 
    NServiceBus.ObjectBuilder.Unity.ConfigureComponentAdapter.ConfigureProperty(String name, Object value) +325 
    NServiceBus.ObjectBuilder.Unity.UnityObjectBuilder.ConfigureProperty(Type concreteComponent, String property, Object value) +338 
    NServiceBus.ObjectBuilder.Common.ComponentConfig.NServiceBus.ObjectBuilder.IComponentConfig.ConfigureProperty(String name, Object value) +120 
    NServiceBus.ObjectBuilder.Common.ComponentConfig`1.NServiceBus.ObjectBuilder.IComponentConfig<T>.ConfigureProperty(Expression`1 property, Object value) +266 
    NServiceBus.ObjectBuilder.Common.Config.ConfigureCommon.With(Configure config, IContainer container) +633 
    NServiceBus.ConfigureUnityBuilder.UnityBuilder(Configure config, IUnityContainer container) +112 

답변

0

내가 대답을 수락하고 싶습니다. Udi's 대답, 음, 그는 남자입니다. 그러나 필자는 필요한 모든 유형을 등록하려고 시도했지만 Unity 2 빌더를 작동시킬 수 없었습니다.

일주일이 지난 후에 DefaultBuilder를 사용하여 미리 작성된 Unity 컨테이너를 ServiceLocator에 전달하고 IServiceLocator를 NSB의 기본 작성기에 대한 싱글 톤으로 등록했습니다. 그것은 아주 잘 진행되었습니다.

1

당신은 .CreateBus를 호출하기 전에 컨테이너의 모든 새로운 유형을 등록해야합니다().

+0

우디 (Udi)는 메시지 유형을 말하는 것입니까? – BlackICE

+0

아니요, 이것은 모든 핸들러 유형뿐만 아니라 핸들러에 주입하고자하는 모든 것입니다. –

관련 문제