2011-01-11 5 views
1

완벽하게 작동하고 작동하는 Unity 응용 프로그램이 있지만 현재 모든 컴파일 경고에 따라 코드를 정리하는 중입니다.Unity 솔루션에서 사용되지 않는 Microsoft.Practices.Unity.Configuration.ContainerElement.Configure 메서드를 바꾸려면 어떻게합니까?

var map = new ExeConfigurationFileMap { ExeConfigFilename = GetConfigFolderForFile("unity.config") }; 
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); 
var section = (UnityConfigurationSection)config.GetSection(SectionName); 

if (section != null) 
{ 

    var container = new UnityContainer(); 

    foreach (ContainerElement containerElement in section.Containers) 
    { 
     containerElement.Configure(container); 
    } 

    Container = container; // Set the main container 
} 

내가 UnityConfigurationSection.Configure로 교체하고 싶습니다 :

나는 때문에 쓸모 Microsoft.Practices.Unity.Configuration.ContainerElement.Configure 방법의 다음 코드 조각에 경고를 메서드를 제안했지만 개체 계층 구조의 여러 수준에 있기 때문에 해당 메서드가 동일한 지 확인할 수 없습니다.

var map = new ExeConfigurationFileMap { ExeConfigFilename = GetConfigFolderForFile("unity.config") }; 
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); 
var section = (UnityConfigurationSection)config.GetSection(SectionName); 

if (section != null) 
{ 
    IUnityContainer container = new UnityContainer(); 

    container = section.Configure(container); 

    Container = container; // Set the main container 
} 

하지만이 null 참조로 아래로 떨어지면 :

은 내가 시도했습니다.

더 이상 사용되지 않는 방법을 사용하지 않으려면 코드를 어떻게 업데이트해야합니까?

답변

1

나는 이것을 작동시킬 수 있었다. 모든 것이 -

foreach (ContainerElement containerElement in section.Containers) 
{ 
    container = section.Configure(container, containerElement.Name); 
} 
이 가 지금까지하고 있던는 쓸모 Container.Configure 방법과 동일하고있어 것처럼 보인다

: 비밀은 각 컨테이너 요소를 구성하는 컨테이너 이름을 사용 구성 방법의 오버로드를 사용했다 예상대로 작동합니다. 는 config에서 섹션에 이름이없는 경우

1

, 그것은 기본적으로 소요하고 당신은 이름을 지정할 필요가 없습니다 :

<containers> 
    <container> 
    <types> 
     <type type="IObject" mapTo="Object" /> 
    </types> 
    </container> 
</containers> 
관련 문제