Je commence à peine à comprendre les délégués, j'ai une classe qui implemens IDisposable:Comment passer un délégué à une méthode, où les délégués sont non statiques?
public class MyClass : IDisposable
{
public delegate int DoSomething();
public int Zero() {return 0;}
public int One() {return 1;}
public void Dispose()
{
// Cleanup
}
}
Méthode (définie dans une autre classe) qui utilise MyClass:
public class AnotherCLass
{
public static void UseMyClass(MyClass.DoSomething func)
{
using (var mc = new MyClass())
{
// Call the delegate function
mc.func(); // <-------- this is what i should actually call
}
}
}
La réelle question : comment passer la fonction Zero() à la méthode UseMyClass? Dois-je créer une instance de MyClass (je voudrais éviter cela ...)?
public static void main(string[] args)
{
// Call AnotherClass method, by passing Zero()
// or One() but without instatiate MyCLass
AnotherClass.UseMyClass(??????????);
}
Peut-être que si vous le pouvez expliquer ce que vous essayez de faire, nous pourrions être en mesure de recommander quelque chose de mieux. – IAbstract
MyClass est DAL, j'ai quelques méthodes membres à appeler. D'une autre classe (entreprise) utilise le DAL et définit la méthode "UseMyClass". Comment puis-je passer la fonction Zero() à la classe business à partir de l'interface graphique, sans créer une nouvelle instance de MyClass? – gremo
Vous pouvez envisager d'utiliser une interface sur votre objet MyClass pour exposer la propriété Zero() et demander à votre fonction UseMyClass de prendre cette interface en tant qu'argument. À mon humble avis, semble être un meilleur moyen pour moi. –