0

C# でリフレクションを使用して関数を呼び出す必要があります。次のコードは、戻りデータ型 sqldatareader を持つ関数に対して正常に機能します。

 public override void Testmethod()
   {
        SqlDataReader Reader = (SqlDataReader)method.Invoke(Activator.CreateInstance(type),new object[] {arr});
   }

しかし今、戻り値の型についても動的に言及する必要があり、関数を呼び出す必要があることに依存しています。

戻り値の型を動的に指定するにはどうすればよいですか?

4

1 に答える 1

1

メソッドの戻り値の型を取得するには、次のようにします。

Type returnType = method.ReturnType;

次に、型を比較し、必要なメソッドを呼び出し、その戻り値の型をコンパイル時に既知の型 (この例ではSqlDataReader)に変換できます。

if (returnType == typeof(SqlDataReader))
{
    SqlDataReader Reader = (SqlDataReader)method.Invoke(Activator.CreateInstance(type),new object[] {arr});
}

他のケースでも同じことをする

else if (returnType == typeof(string))
{
    // invoke some other method and convert it's return type to a string ...
}
于 2013-10-17T11:26:15.067 に答える