2010年10月13日 星期三

Delegate的用法

我用最簡單的方式來說明一下Delegate特殊型別

簡單說就是可以讓內部程式呼叫外部程式的事件

,內部程式指的是底層的程式碼,任何人都不能

去動到,除了寫底層的設計師,外部程式是任何

設計師可以去改的地方,我現在想要從內部程式

自動去呼叫外部程式的事件,這就必須請Delegate

大師過來了。


我現在假設我有

A程式碼(外部)

B程式碼(內部)


B:


public delegate   int   GetValue(int value);

public event GetValueEvent GetValue;

public int polo(int value)

        {

            return GetValue(value);

        }


我先在內部的程式碼裡面,先設一個GeTime這名稱的delegate
在宣告一個GetValueEvent事件用來HOOK外部事件,然後
在polo方法裡面直接呼叫GetValue這方法


A:


  public static int addva(int value)
        {
            return value + value;
        }
        static void Main(string[] args)
        {
            Class1 dd = new Class1();
            dd.GetValue += new ConsoleApplication2.Class1.GetValueEvent(addva);
            var se = dd.polo(22);
            Console.Write(se);
        }

在外部程式我先建一個方法,這方法不管要作+ - * / 都可以,
然後再main的方法裡,去hook住Addva這方法,好讓B去呼叫
A的程式碼

沒有留言: