2013-04-03 75 views
0

我有兩個構造函數,第一個正常工作如下:團結集裝箱傳遞運行構造函數的參數

public ESite(Func<IOrg> unityOrgFactory) 
    { 
     this.OrFactory = unityOrgFactory; 
     this.Kid = Guid.Empty; 
    } 
_IoC.RegisterType<IESite, ESite>(); 
IESite eSite = boClass.IoC.Resolve<IESite>(); 

現在,我需要在運行時一鍵通,所以我加一個構造像往常一樣:

public ESite(Func<IOrg> unityOrgFactory, Guid kid) 
    { 
     this.OrFactory = unityOrgFactory; 
     this.Kid = kid; 
    } 

此註冊和解決使用的語法?我已經嘗試了幾種InjectionConstructor變體,但是無法正確使用它...我錯過了一些東西。經過幾輪搜索和嘗試,有時間問!我已閱讀相關主題的幾個帖子...

感謝提示! GG

回答

0

一個合理的解決方法(不一定是最好的答案)是由注射參數移動到InjectionMethod

註冊到disencumber構造:

// Use InjectionMethod Initializer to free up constructors. http://msdn.microsoft.com/en-us/library/ff953186(v=pandp.50).aspx new InjectionMethod("Initialize", typeof(Database), "CustomerServices") 
     _IoC.RegisterType<IESite, ESite>(
      new InjectionMethod("Initialize", typeof(Func<IOrg>)) 
      ); 

用途:

 //http://msdn.microsoft.com/en-us/library/ff953186(v=pandp.50).aspx 
    [InjectionMethod] 
    public void Initialize(Func<IOrg> unityOrgFactory)