0

ここで問題が発生しました。(C#)

文字列をパラメーターとして受け取り、オブジェクトを返す別のアセンブリ (変更できません) にコレクションがあります。

お気に入り:

object Value = ThatCollection.GetValue("ParameterName");

問題は、パラメーター文字列ごとに、異なる型をオブジェクトとして返すことです。私が望むのは、これらのオブジェクトをそれぞれの型にキャストし、文字列名によって実行時にのみ型を知ることです。

これらの戻り値を使用していくつかの操作を行う必要があります。そのためには、メンバーなどにアクセスするために適切にキャストする必要があります。

制限:

  • 私のコードは古いフレームワーク 3.5 で実行する必要があるため、「動的」は使用できません (相互運用の問題のため)。
  • さまざまなタイプの多くの戻り値を操作する必要があります(もちろん、「オブジェクト」を除いて、共通のインターフェイスや基本クラスはありません)
  • 私が持っているのは、パラメーター名と返された型を関連付けるテーブル (文字列値を含む) だけです。
  • はい、そのテーブルを biiig の「switch」ステートメントに変換できますが、あまり良くありません。それは望ましくありません。

ヒントはありますか??

4

1 に答える 1

0

リフレクションを調べたい場合は、次のようなものがオブジェクトを型Tにキャストするために機能するはずです。簡単なキャストメソッドを設定します。

    public static T CastToType<T>(object o)
    {
        return (T)o;
    }

リフレクションを使用してこれを呼び出します。

    Type t = Type.GetType(stringName)
    MethodInfo castTypeMethod = this.GetType().GetMethod("CastToType").MakeGenericMethod(t);
    object castedObject = castTypeMethod .Invoke(null, new object[] { obj });
于 2013-03-15T18:24:57.393 に答える