2013-11-09 102 views
0

我一直在嘗試創建SearchResult類System.DirectoryServices的實例。c#反射參數計數不匹配

根據MSDN,它的實現是這樣的:

[DirectoryServicesPermissionAttribute(SecurityAction.LinkDemand, Unrestricted = true)] 
public class SearchResult 

我的反映是這樣的:

ConstructorInfo ctor = typeof(SearchResult).GetConstructors(BindingFlags.Instance | BindingFlags.NonPublic)[0]; 
SearchResult abc = (SearchResult)ctor.Invoke(new object[] { }); 

有一個在ctor但在調用構造函數的值,就會發生錯誤:

An unhandled exception of type 'System.Reflection.TargetParameterCountException' occurred in mscorlib.dll 
Additional information: Parameter count mismatch. 

爲什麼它說,有一個參數計數不匹配時,實現表示它的構造函數中沒有參數?我將new object[] { }更改爲null,但它說相同的錯誤。

我該如何解決這個問題?謝謝。

回答

2

問題是DirectoryServices沒有公共構造函數。用Ildasm檢查可以看出它有一個內部構造函數,但不是無參數的。

它的簽名是:

internal SearchResult(System.Net.NetworkCredential parentCredentials, 
         System.DirectoryServices.AuthenticationTypes parentAuthenticationType); 

由於類有一個參數的構造函數,沒有自動生成參數的構造函數可用。

+0

感謝,想知道他們爲什麼沒有在MSDN中提到它 –

+0

他們這樣做,導航中沒有「構造器」點。只有方法和屬性。 – CSharpie

+0

msdn文檔沒有提及私有或內部成員,因爲它們不打算由用戶代碼調用。他們會提到它是否有一個公共無參數的構造器。 @CSharpie:有,構造函數的內部保留名稱命名爲「.ctor」。 – PMF