2012-11-06 95 views
2

要創建一個類的實例與激活自定義的數據,如下列:創建activationCustomData參數類實例

var repo = Activator.CreateInstance(Type.GetType(repoFullName), 
       new string[] { connectionString }) as IRepository; 

如果我沒有通過這第二個參數CreateInstance方法一切字符串數組工作正常,但與定製數據參數方法拋出異常

system.missingMethodException而:上式「Namespase.MockRepository」構造未找到。

實例類型的公共構造

public MockRepository(string[] customData) {...} 

public MockRepository(Object[] customData) {...} 

沒有改變的效果。我做錯了什麼?

回答

2

您需要修改構造函數簽名,現在你在呼喚它傳遞一個字符串/對象,而不是一個數組,因此無法找到匹配的構造函數,如果要激活的對象的方式視圖反射以這種方式對象必須有一個匹配的構造到調用代碼。您使用的對象陣列將參數傳遞給激活的原因是允許多個參數被傳遞到基於位置的構造和類型必須的定義相匹配。

如果你有一個構造函數:

public MockRepository(string customData) {...} 

應該正確實例化,這是說,如果你也打算不傳遞任何參數,你需要定義一個無參數的構造函數以及構造函數來實例化。

+0

的工作,謝謝。 – Maxim