2017-10-10 75 views
2

我有以下類聲明: Logger Service,FacadeReaderService和BusinessManager。我想使用Unity XML配置在BusinessManager中注入Logger Service和FacadeReaderService。使用Unity XML配置文件在構造函數中注入複雜對象

記錄器服務

public class LoggerService : ILoggerService 
{ 

} 

FacadeReaderService

public class FacadeReaderService : IFacadeReaderService 
{ 
} 

BusinessManager

public class BusinessManager : IBal 
    { 
     IFacadeReaderService _facadeReaderService; 
     ILoggerService _loggerService; 

     public BusinessManager(IFacadeReaderService facadeReaderService, ILoggerService loggerService) 
     { 
      this._facadeReaderService = facadeReaderService; 
      this._loggerService = loggerService; 
     } 
    } 

我的問題是如何注入在我BusinessManager類這種複雜的對象呢?下面是我在我的統一配置文件,這樣做的遠:

<unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> 
    <typeAliases> 
    <typeAlias alias="IFacadeReaderService" type="Interfaces.Services.IFacadeReaderService, Interfaces" /> 
    <typeAlias alias="FacadeReaderService" type="Services.FacadeReader.FacadeReaderService, Services" /> 

    <typeAlias alias="ILoggerService" type="Interfaces.Services.ILoggerService, Interfaces" /> 
    <typeAlias alias="LoggerService" type="Services.Log.LoggerService, Services" /> 


    <typeAlias alias="IBal" type="Interfaces.Bal.IBal, Interfaces" /> 
    <typeAlias alias="BusinessManager" type="Bal.BusinessManager, Bal" /> 


    </typeAliases> 
    <container> 
     <register type="IFacadeReaderService" mapTo="FacadeReaderService" name="FRS"/> 
     <register type="ILoggerService" mapTo="LoggerService" name="LS"/> 
     <register type="IBal" mapTo="BusinessManager" name="BMS"> 
     <constructor> 
     <param name="facadeReaderService" value="????????" /> 
     <param name="loggerService" value="??????" /> 
     </constructor> 
     </register> 
    </container> 
</unity> 

回答

1

嗯,我找到了答案,我的問題通過查看微軟文檔中:https://msdn.microsoft.com/en-us/library/ff660914(v=pandp.20).aspx#config_value

我將張貼統一的配置,只是在如果有人需要它:

<unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> 
    <typeAliases> 
    <typeAlias alias="IFacadeReaderService" type="Interfaces.Services.IFacadeReaderService, Interfaces" /> 
    <typeAlias alias="FacadeReaderService" type="Services.FacadeReader.FacadeReaderService, Services" /> 

    <typeAlias alias="ILoggerService" type="Interfaces.Services.ILoggerService, Interfaces" /> 
    <typeAlias alias="LoggerService" type="Services.Log.LoggerService, Services" /> 


    <typeAlias alias="IBal" type="Interfaces.Bal.IBal, Interfaces" /> 
    <typeAlias alias="BusinessManager" type="Bal.BusinessManager, Bal" /> 


    </typeAliases> 
    <container> 
     <register type="IFacadeReaderService" mapTo="FacadeReaderService" name="FRS"/> 
     <register type="ILoggerService" mapTo="LoggerService" name="LS"/> 
     <register type="IBal" mapTo="BusinessManager" name="BMS"> 
     <constructor> 
      <param name="facadeReaderService"> 
      <dependency name="FRS" /> 
      </param> 
      <param name="loggerService"> 
      <dependency name="LS" /> 
      </param> 
     </constructor> 
     </register> 
    </container> 
</unity> 
相關問題