Programming/C#

[CustomEvent] 간단한 이벤트 클래스 작성

blueasa 2012. 4. 25. 18:19






EventArgs 를 상속받는 클래스 안에다가 이벤트에 필요한 "event" 와 delegate  를 함께 작성 함으로서 구현 코드의 코드량을 줄였다.



이벤트 클래스 작성
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace StikusFrameAuth.events
{
    public class SFATraceEvent : EventArgs
    {
        //event
        public delegate void SFATraceEventDele(object sender, SFATraceEvent e);
        public static event SFATraceEventDele TraceEvent;


        //arg
        public STATUS_TYPE statusType { get; private set; }
        public string contentString { get; private set; } 
        public SFATraceEvent(STATUS_TYPE _statusType , params object[] _content)
            : base()
        {
            statusType = _statusType;
            foreach (var s in _content)
            {
                contentString += s.ToString() + " ";
            }
        }
        public enum STATUS_TYPE
        {
            COMMENT
        }


        //dispatch
        public static void dispatchEvent(object sender,  params object[] _content)
        {
            TraceEvent(sender, new SFATraceEvent(STATUS_TYPE.COMMENT, _content));
        }
    }
}



구현
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using StikusFrameAuth.events;
namespace StikusFrameAuth
{
    public class StikusFrameAuth
    {
        public StikusFrameAuth()
        {

            //addEventListener
            SFATraceEvent.TraceEvent +=new SFATraceEvent.SFATraceEventDele(SFATraceEventArg_SFATraceEvent);
            


            //dispatchEvent
            SFATraceEvent.dispatchEvent(this,  "argString" , "wow");
        }

        void SFATraceEventArg_SFATraceEvent(object sender, SFATraceEvent e)
        {
            Console.WriteLine(e.contentString);
        }
    }
}


AS3 의 addEventlistener , DispatchEvent 와 엇비슷한 형태로 사용이 가능하다

반응형