2011-03-31 4 views
0

내 app.config 파일에서 대부분의 인터페이스를 구체적인 클래스에 매핑하려고합니다. 그러나 런타임에 동일한 Unity 카탈로그에 일부 인터페이스를 등록하려고합니다. 나는 아래의 코드를했지만, 그것은 나에게주는 SynchronizationLockException: Object synchronization method was called from an unsynchronized block of code.런타임시 Unity 카탈로그를 확장하려면 어떻게해야합니까?

IUnityContainer container = new UnityContainer(); 

UnityConfigurationSection configSection = 
    (UnityConfigurationSection)ConfigurationManager.GetSection("unity"); 
configSection.Containers.Default.Configure(container); 

container.RegisterInstance<IInterface>(new ConcreteObject()); 

가 어떻게의 app.config에서 초기화 된 유니티 카탈로그에 런타임에 객체를 등록 할 수있는?

Prism4와 함께 제공되는 Unity 버전 (2.0)을 사용하고 있습니다.

답변

0

이것은 일반적인 문제이지만, 단결 개체를 등록 할 때 기술적으로 오류가 아닙니다. 등록을 다음으로 변경하십시오.

container.RegisterType<IInterface, ConcreteObject>(new ContainerControlledLifetimeManager()); 

그러면 문제가 해결됩니다. 포인터에 대한

Can Unity be made to not throw SynchronizationLockException all the time?

+0

감사합니다,하지만 난 개체 인스턴스를 전달 어떻게 :

그 예외는 이로 인해 발생됩니다? – MvdD

+0

요청할 때 인스턴스를 생성해야합니다. – poindexter12

+1

네,하지만 새 인스턴스를 새로 만들려하지 않습니다. 런타임에 컨테이너에 등록한 인스턴스를 반환하고 싶습니다. – MvdD

관련 문제