c#反射参数计数不匹配

时间:2013-11-09 07:59:38

标签: c# reflection

我一直在尝试创建System.DirectoryServices的SearchResult类的实例。

根据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.

为什么当实现说它的构造函数中没有params时,它确实说参数计数不匹配?我将new object[] { }更改为null,但它说的是同样的错误。

我该如何解决这个问题?感谢。

1 个答案:

答案 0 :(得分:2)

问题是DirectoryServices没有公共构造函数。使用Ildasm检查可以看到它有一个内部构造函数,但不是无参数构造函数。

它的签名是:

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

因为该类具有参数化构造函数,所以没有自动生成的无参数构造函数可用。