2013-11-09 6 views
0

Я пытаюсь создать экземпляр класса System.DirectoryServices SearchResult.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

Смежные вопросы