如何在方法调用中传递动态参数

时间:2014-01-05 17:55:42

标签: c# dynamic dapper

我正在使用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'没有指定的适用方法   “查询”但似乎有一个名称的扩展方法。   无法动态分派扩展方法。考虑投射   动态参数或调用扩展方法没有   扩展方法语法

我做错了什么,以及我在这里尝试传递动态参数的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

使用object代替dynamic

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);
    }
}