如何确定对象是否可以调用()?

时间:2010-06-18 12:20:58

标签: c# events invoke

考虑以下课程:

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

如何实现Invokable(),以及编译此代码还需要什么?我知道的唯一其他问题是target.BeginInvoke调用,因为目标是object

1 个答案:

答案 0 :(得分:2)

如果要调用System.Windows.Forms.Control

static bool Invokable(object o) {
  bool res = false;
  if(o is System.Windows.Forms.Control) {
   res = ((System.Windows.Forms.Control)o).InvokeRequired;
 }
 return res;
}