[CustomEvent] C# 의 사용자 이벤트 작성

사용자 이벤트라 함은 이벤트 객체의 고유 속성을 사용할수 있어야 한다.

AS3 에서 보면

addEventListener( e:CustomEvent , handler )
function handler(e:CustomEvent)
{
    e.propertys;
}

여기서 e의 속성을 사용하여야 한다는 말이 된다.



이것을 c#으로 구현 하여 보자,

우선 테스트 코딩을 보면 , 기존의 이벤트와 사용법이 같다.
( 먼저 덩어리를 보고 시작하자. )




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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {


            //이벤트를 담고있는 객체를 생성��고 
            CustomEvent ev = new CustomEvent();


            //이벤트객체�� event 에 델리게이트를 추가 한다.
            // e_myEvent 는 이벤트가 ��출��었을때 실행될 메소드 이다.
            ev.myEvent += new CustomEvent.CustomEventDelegate(e_myEvent);


            //만약 이벤트를 무작정 발생시킬려면 
            //바로 메소드를 ��출��면 된다.
            //ev.ActivateEvent("ck", 123);


            //테스트로 아무런 문자�� 입력 받는다.
            string str = Console.ReadLine();
            //문자가 null 이 아니라면,
            if (str != null)
            {
                //이벤트를 발생시킨다.
                ev.ActivateEvent(str, str.Length);
            }
        }


        // 이벤트를 받는 메소드 , sender 는 발생시킨 객체
        // e는 이벤트�� 속성을 담고 있는 객체 이다.
        static void e_myEvent(object sender, CustomEventArg e)
        {

            Console.WriteLine("Event ::  " + sender + "    " + e);
            Console.WriteLine("");
            Console.WriteLine("text :: ", e.Arg1 + "    length :: " + e.Arg2);

        }
    }
}






그다음은 속성을 만드는 클래스이다.




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

namespace ConsoleApplication1
{
    class CustomEventArg
    {

        //이벤트를 담을 클��스
        //별 내용 없다. 단지 저장�� 기능을 한다.
        //여기서 사용자가 필요한 속성을 추가 ��면된다.
        private string _arg1;
        private int _arg2;

        public CustomEventArg(string arg1 , int arg2)
        {
            _arg1 = arg1; 
            _arg2 = arg2;
        }

        public string Arg1
        {
            get{return _arg1;}
        }
        public int Arg2
        {
            get{return _arg2;}
        }
    }
}








마지막으로 결정적인 이벤트 클래스이다.


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

namespace ConsoleApplication1
{
    class CustomEvent
    {
       
        // 이벤트 를 ��리할 델리게이트와 그�� 이벤트이다.
        // 여기서 델리게이트는 기존�� 이벤트들�� 속성과 같이
        // 매개변��를 만들어준다.
        public delegate void CustomEventDelegate(Object sender, CustomEventArg e);
        public event CustomEventDelegate myEvent;

        // 이벤트를 발생시킬 메소드이다. 여기서 주요 속성을 입력 받는다.
        // 만약 다른곳�� 정보를 이용한다면 구지 안해도 된다만...
        public void ActivateEvent(string arg1 , int arg2)
        {
            // 이벤트 속성 객체를 선언��고 그�� 매개변��를 전달한다.
            CustomEventArg customArg = new CustomEventArg(arg1 , arg2);

            //그리고 이벤트델리게이트와 연결시킨다.
            myEvent(this, customArg);
        }
    }
}




그리고 ,. 다시한번 Main 을 보자.


Yamecoder 야매코더_
C# 2010.12.04 00:03
Powerd by Tistory, designed by criuce
rss