메서드 호출에서 동적 매개 변수를 전달하는 방법

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