J'ai une fonction avec un paramètre et je veux l'appeler en tant que paramètre dans une autre fonction en utilisant Action . c'est le code :

    public void msg(string name)
    {
        MessageBox.Show("Hello " + name);
    }

    public void CallMethod(Action<object> Function)
    {

        Function();

    }

Cela me donne une erreur lors de l'appel de la fonction Method avec le paramètre msg :

    private void Form1_Load(object sender, EventArgs e)
    {
        CallMethod(msg("John"));
    }

Je ne veux pas envoyer le paramètre dans la fonction Method comme ceci :

    public void CallMethod(Action<object> Function)
    {

        Function("John");

    }

De l'aide?

c#
0
Borkan 20 nov. 2019 à 12:17

1 réponse

Meilleure réponse

Vous pouvez créer une méthode générique avec le paramètre :

public void CallMethod<T>(Action<T> Function, T parameter)
{
    ...
    Function(parameter);
    ...
}

Et utilisez-le comme ceci:

CallMethod(msg, "John");

Une autre possibilité consiste à passer le délégué à l'aide de lambda :

public void CallMethod(Action action)
{
    ...
    action();
    ...
}

L'usage:

 CallMethod(() => msg("John"));
7
Sinatr 20 nov. 2019 à 09:30