2011-03-22 2 views
3

우리 프로젝트에서는 Unity를 의존성 주입 프레임 워크로 사용합니다. 이제 저는 늦은 바운드 버전 인 IUnityContainer.RegisterInstance()이 필요한 상황에 직면 해 있습니다.Unity에서 RegisterInstance의 후기 바인딩 버전

Ninject에, 나는이 일을하려고하고있는 코드는 다음과 같이 보일 것입니다 :

this.Bind<IMyInterface>().ToMethod(context => GetMyObjectLateBound()); 

유니티 그러나, 지금까지,이 일을하는 방법을 발견하지 않았습니다.

왜 내가 이것을 필요로하는지 이유는 IMyInterface의 인스턴스가 아직 생성되지 않았기 때문에 바인딩이 발생하고 개체 생성도 Unity에서 처리되지 않는다는 것입니다. (그리고 나는 곧 이것을 대체 할 수 없습니다.)

답변

5

Unity는 Lazy를 지원합니다. 당신은 통일에 다음 확장자를 추가해야합니다

unityContainer.AddNewExtension<LazySupportExtension>(); 

다음 다음과 같은 작업을 수행 할 수 있습니다이 도움이

unityContainer.RegisterType<IComponent, Component1>(); 
var lazyComponent = unityContainer.Resolve<Lazy<IComponent>>(); 

희망을.

+0

해당 확장 프로그램의 위치는 어디입니까? 어디서나 Unity DLL에 있지 않습니다. –

+1

참조 : http://archive.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=PierreCode&ReleaseId=4357 –

+0

링크가 더 이상 작동하지 않습니다. – thepirat000

관련 문제