0

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.

コンストラクターにパラメーターがないと実装が言っているのに、パラメーター数の不一致があると言うのはなぜですか? に変更new object[] { }しましnullたが、同じエラーが表示されます。

どうすればこれを修正できますか? ありがとう。

4

1 に答える 1

2

問題は、DirectoryServices にパブリック コンストラクターがないことです。Ildasm で確認すると、内部コンストラクターが 1 つあることがわかりますが、パラメーターのないコンストラクターはありません。

その署名は次のとおりです。

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

クラスにはパラメーター化されたコンストラクターがあるため、自動的に生成されたパラメーターなしのコンストラクターは使用できません。

于 2013-11-09T08:44:24.033 に答える