Comment passer des paramètres dynamiques dans un appel de méthode

c# dapper dynamic

Question

J'utilise dapper pour obtenir des données de la base de données et comme les connexions aux bases de données doivent être éliminées, je les place dans un bloc. Mais j'ai commencé à remarquer que je voyais beaucoup des mêmes utilisations et je pensais que cela pourrait être intelligent d'écrire une fonction wrapper, quelque chose comme ceci:

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

Mais cela ne compilera pas et je ne comprends pas bien l’erreur que j’obtiens:

System.Data.SqlClient.SqlConnection 'n'a pas de méthode applicable nommée' Query 'mais semble avoir une méthode d'extension par ce nom. Les méthodes d'extension ne peuvent pas être distribuées dynamiquement. Envisagez de convertir les arguments dynamiques ou d'appeler la méthode d'extension sans la syntaxe de la méthode d'extension

Qu'est-ce que je fais mal et quelle est la bonne façon de transmettre les paramètres dynamiques comme je le fais ici?

Réponse acceptée

utiliser object au lieu de 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);
    }
}


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi