0
Tenir compte de la classe suivante:Comment puis-je savoir si un objet peut être Invoke() 'd?
public class Event<T>
{
public delegate void Handler<t>(t msg);
private event Handler<T> E;
public void connect(Delegate handler) {
E += delegate(T msg) {
object target = handler.Target;
if (Invokable(target) {
target.BeginInvoke(handler, new object[] { msg });
}
};
}
public void emit(T msg) {
if (E != null) {
E(msg);
}
}
private static bool Invokable(object o) {
// magic
}
}
Comment puis-je mettre en œuvre Invokable()
, et quoi d'autre ai-je besoin de ce code pour compiler? Le seul autre problème que je connais est l'appel target.BeginInvoke
, puisque la cible est object
.
Quelle est la méthode 'Invokable' censé parler de l'objet' O' (il est une méthode statique, donc il ne peut pas accéder rien d'autre)? –
pourquoi réinventez-vous les délégués? – Andrey
@Tomas: que 'o' soit ou non un formulaire, parce que j'ai besoin de magie de sécurité. –