2 votes

Réflexion dans .NET

class Program
{
    static void Main(string[] args)
    {
        Type doub = typeof(Doub);
        object result = doub.InvokeMember("Call", BindingFlags.InvokeMethod, null, null, new object[] { });
    }
}

public class Doub
{
    public Collection<string> Call()
    {
        Collection<string> collection = new Collection<string>();
        return collection;
    }

    public Collection<T> Call<T>()
    {
        Collection<T> collection = new Collection<T>();
        return collection;
    }
}

J'ai essayé d'appeler la méthode Call, mais le programme ne parvient pas à savoir quelle méthode appeler. Erreur : (System.Reflection.AmbiguousMatchException : "Ambiguous match found"). Comment pouvez-vous appeler exactement la méthode Call() de la classe ?

2voto

DavidG Points 12762

Vous devez utiliser un autre moyen pour que la méthode s'exécute. Par exemple, la méthode Type a une méthode appelée GetMethod avec diverses surcharges, vous pourriez utiliser celle qui vous permet de spécifier combien de paramètres génériques la méthode possède par exemple :

Type doub = typeof(Doub);
var callMethod = doub.GetMethod("Call", 0, new Type[] {});

// You need an instance of the object to call the method on
var x = new Doub();

var result = callMethod.Invoke(x, new object[] {});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X