2013-01-21 4 views
0

처음으로 단일 응용 프로그램 블록이라는 DI 프레임 워크를 사용하고 있습니다. 오류가 발생했습니다. 오류는 다음과 같습니다 -Unity 응용 프로그램 블록 종속성 주입 사용 관련 문제

유형 이름 또는 별명 ILogger입니다 확인할 수 없습니다. 구성 파일을 확인하고이 유형 이름을 확인하십시오.

것은 내가 내 주요 PROJ 속으로 측면에서 의존성을 주입하려고했다. 내가 어디서나 종속성에 의해 데이터를 저장하고 싶다고 가정 해 봅시다. 내가 유니티 통합에 대한 내 응용 프로그램을 개발하는 방법을 내가 당신을 말하고 파일에 데이터 또는 콘솔 등 데이터베이스 여기

을 저장한다고 가정 말.

먼저 "Ilogger"라는 클래스 라이브러리 프로젝트를 만듭니다.이 프로젝트에는 하나의 인터페이스 만 있습니다. 이 인터페이스

namespace Ilogger 
{ 
    public interface ILog 
    { 
     void Write(string msg); 
    } 
} 

의 전체 코드는 둘째로 나는 내가 단지 ConsoleWriter의 PROJ로하는 ILogger 프로젝트의 참조를 추가 interface.so하는 ILogger을 상속 하나의 클래스가 "ConsoleWriter"라는 클래스 라이브러리 프로젝트를 만듭니다. 이 ConsoleWriter

namespace ConsoleWriter 
{ 
    public class ConsoleWriter : Ilogger.ILog 
    { 
     #region ILog Members 

     public void Write(string msg) 
     { 
      Console.WriteLine(msg); 
      Console.ReadLine(); 
     } 

     #endregion 
    } 
} 

3 단계의 전체 코드는 내가 "FileWriter "라는 클래스 라이브러리 프로젝트를 만들 난 그냥 FileWriter의 PROJ로하는 ILogger 프로젝트의 참조를 추가 interface.so가하는 ILogger을 상속 하나 개의 클래스가 있습니다.

namespace FileWriter 
{ 
    public class FileWriter : Ilogger.ILog 
    { 
     #region IWriter Members 

     public void Write(string msg) 
     { 
      using (StreamWriter streamWriter = new StreamWriter("c:\\TestUnity.txt", true)) 
      { 
       streamWriter.WriteLine(msg); 
      } 
     } 
     #endregion 
    } 
} 

다음에 내가 런타임에 실행 종속를 주입 곳에서 내 승리의 애플 리케이션을 만드는이 FileWriter의 전체 코드. 이 프로젝트에서 내가 단결 블록의 일부 DLL 참조를 추가하고 그 있습니다.

Microsoft.Practices.Unity 
Microsoft.Practices.Unity.Configuration 
system.configuration 

내가 하나 개의 app.config 파일을 추가하고이

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
     <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/> 
    </configSections> 

    <unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> 
     <alias type="ILogger.ILog, ILogger" alias="ILogger" /> 
     <namespace name="ILogger.ILog"/> 

     <container> 
      <register mapTo="FileWriter.FileWriter, FileWriter" name="MyFileWriter" type="ILogger"/> 
      <register mapTo="ConsoleWriter.ConsoleWriter, ConsoleWriter" name="MyConsoleWriter" type="ILogger"/> 
     </container> 
    </unity> 

</configuration> 

같은 항목이 여기에 오류가

문자열 strCountryCode = "USA"슬로우되는 곳에서의 주요 코드가있다;

IDictionary<string, string> loggers = new Dictionary<string, string>(); 
    loggers.Add("USA", "MyFileWriter"); 
    loggers.Add("GBR", "MyConsoleWriter"); 

    IUnityContainer container = new UnityContainer(); 
    UnityConfigurationSection section = (UnityConfigurationSection)System.Configuration.ConfigurationManager.GetSection("unity"); 
    //container.LoadConfiguration(); 
    section.Containers.Default.Configure(container); 

    Ilogger.ILog logger = container.Resolve<Ilogger.ILog>(loggers[strCountryCode]); 
    logger.Write("Hello World"); 

이 줄을주는 내가 그래서 난 내가 만든 어떤 실수 잡을 수없는거야 DI 프레임 워크의 단결을 처음 사용하고 section.Containers.Default.Configure(container);

오류입니다. 아무도 나를 도와 오류를 해결하고 그것을 해결하는 방법을 말해주십시오.

감사합니다.

답변

0

몇 가지 문제가있을 수 있습니다. 당신이, 당신이 ILog 인터페이스를 포함하는 어셈블리를 추가 할 필요가 연합 구성을 읽으려는 응용 프로그램의 진입 점에서

  • ; 어셈블리가 누락되었을 수 있습니다.

  • 전체 경로를 사용하여 별칭을 추가해야합니다. 전체 경로는 어셈블리 이름을 포함해야합니다. 대신 구성 파일을 사용하는 정확한 문제를 관찰하기 위해

  • , 코드에 등록을하려고합니다.

+0

prob.canu를 찾아서 샘플 코드로 안내해주세요. 어떻게 설정 파일없이 화일로 작업 할 수 있습니까? 덕분에 – Thomas

+0

무엇이 문제였습니까? 통합 구성을 위해 http://msdn.microsoft.com/en-us/library/ff648211.aspx를 참조하십시오 ... – daryal

+0

구성 파일에 문제가있었습니다. – Thomas

관련 문제