如何让一个命名空间中的许多不相关类共享一个对象?而又不希望这个对象是静态的我现在想做一个EventManger,这个类里面包含多个事件,可以被多个类注册,可是如果事件定义为静态的,那么注册它的方法也要定义为静态的,所以不想这么干不知道有什么好的解决方案么?

解决方案 »

  1.   

    to 我现在想做一个EventManger,这个类里面包含多个事件,可以被多个类注册,可是如果事件定义为静态的,那么注册它的方法也要定义为静态的,所以不想这么干事件?
    delegate?
    如果是的话,只要加上public哪儿都能用。
      

  2.   

    刚犯傻了,把成员写到Main里去了,说咱通不过哦
    这会搞定了
      

  3.   

    class Program
        {
            
            static void Main(string[] args)
            {
                TestClass t = new TestClass();
                EventManager.Instance().Invoke();
            }
        }    public class TestClass
        {
            public void MsgHandle(EventArgs e)
            {
                Console.WriteLine("hello");
                Console.Read();
            }
            public TestClass()
            {
                EventManager.Instance().MsgEvent += new MsgHandler(MsgHandle);
            }
        }
        public delegate void MsgHandler(EventArgs e);
        public class EventManager
        {
            private static EventManager _stcManager = null;
            private EventManager()
            { 
            }
            public static EventManager Instance()
            {
                if (_stcManager == null)
                {
                    _stcManager = new EventManager();
                }
                return _stcManager;
            }
            public event MsgHandler MsgEvent;
            public void Invoke()
            {
                if (MsgEvent != null)
                {
                    MsgEvent(new EventArgs());
                }
            }
        }