2

.net リフレクション名前空間のメソッド呼び出しに起因するアイテム内にアクセスしようとしています。しかし、一般的なリスト型と配列に変換できませんでした。私のカスタムクラスがあります。

これが私のコードです。

foreach (Type t in theInterfaceInheritedClasses)
{                   
    object instance = a.CreateInstance(t.FullName);
    MethodInfo[] mi = t.GetMethods();
    object res;
    foreach (var method in mi)
    {
       if (method.GetParameters().Count() == 1)
       {
           if (method.Name != "Equals" && method.Name != "GetHashCode" && method.Name != "ToString")
           {
                res= method.Invoke(instance, new object[] {
                           wdoc
                     });
                IEnumerable resultItems = (res as IEnumerable);
           }
        }
    }
}

res には、アクセスしたいアイテムがあります。これどうやってするの?

4

2 に答える 2

0

最後に、問題を解決できます。これは OOP プリンシパルに関するルールだと思います。私の構造をいくつか定義しましょう:

Windows アプリケーションを設計しました。Windows アプリケーションによって呼び出されるメソッドを持つ DLL ファイルをインポートできます。私のアプリとインポートされるクラス ライブラリは、同じ POCO クラスを使用します。しかし、当初、これらのクラスの名前空間は異なっていました。次に、エラーが型の不一致について伝えていることを認識しました。次に、新しいクラス ライブラリを作成して、それら (共通のクラス) をこの新しいクラス ライブラリに入れました。そして、必要なすべてのプロジェクトからこの dll を参照しました。これで、オブジェクトを配列型に変換できます。

私があなたを混乱させたらごめんなさい:)

于 2013-10-30T15:24:19.463 に答える
-2

正確にどこにアクセスしたいですか?オブジェクトを foreach ループ内で "res" にするようです。そのため、foreach ループ外でアクセスする場合は、次のように設定する必要があります。

object res;
foreach(...)
{

}

res にあるはずの値を取得できない理由が質問の場合: 関数からデータを「オブジェクト」型 (ルート型) のオブジェクトにダンプすると、オブジェクトからのメソッド。特定のオブジェクトで定義されたメソッドを使用する場合は、オブジェクトを適切な型に変換してみてください。

foreach(...)
{
   YourType res;
   ...
   res = (YourType)(method.Invoke(instance, new object[] { wdoc }));
}
于 2013-10-30T12:59:00.617 に答える