メソッド呼び出しで動的パラメータを渡す方法

c# dapper dynamic

質問

私はデータベースからデータを取得するためにdapperを使用しています。データベース接続は使用するブロックに配置する必要があります。しかし、私は同じ使用法がたくさんあることに気付き始めました。ラッパー関数を書くのは賢明かもしれないと思いました。

    protected IEnumerable<T> Query<T>(string query, dynamic param = null)
    {
        var connectionString = ConfigurationManager.ConnectionStrings["SomeString"].ConnectionString;

        using (var connection = new SqlConnection(connectionString))
        {
            return connection.Query<T>(query, param);
        }
    }

しかし、これはコンパイルされません、私はかなり私が得るエラーを理解していない:

System.Data.SqlClient.SqlConnection 'には' Query 'という名前の適用可能なメソッドはありませんが、その名前で拡張メソッドがあるようです。拡張メソッドを動的にディスパッチすることはできません。動的引数をキャストするか、拡張メソッド構文を使用せずに拡張メソッドを呼び出すことを検討してください

私は間違って何をしていますか、ここで試しているように動的なパラメータを渡す正しい方法は何ですか?

受け入れられた回答

dynamicなくobjectを使用する。

public IEnumerable<T> Query<T>(string query, object param) 
{
    var connectionString = ConfigurationManager.ConnectionStrings["SomeString"].ConnectionString;

    using(var connection = new SqlConnection(connectionString)) 
    {
        return connection.Query<T>(query, param);
    }
}


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow