2012年3月28日 星期三

C# 拋棄switch 以方法名稱 動態應用

對物件導向開始懵懵懂懂之後,寫程式就會把重複的程式碼抽出來寫成一個方法,需要使用的地方就呼叫方法即可

但是有時候會面臨不同情況得用不同方法的時候

如果這樣寫當然OK,但是兩年後如果還在寫程式,回頭看到一定會會心一笑


if (條件A) {
    doSomethingA();
}
if (條件B) {
    doSomethingB();
}
if (條件C) {
    doSomethingC();
}

如果不能忍受很多 if 可能會變這樣


switch (條件) {
    case A:
        doSomethingA();
        break;
    case B:
        doSomethingB();
        break;
    case C:
        doSomethingC();
        break;
}

如果方法有一萬種呢?case一萬次就好了嘛

老疆表示:好不好玩?

 

 

 

 

歐弗寇斯納特


using System.Reflection; //引用

public partial class testCallMethod : System.Web.UI.Page {
    protected void Page_Load(object sender, EventArgs e) {

    }
    protected void Button1_Click(object sender, EventArgs e) {        
        //MethodInfo mInfo = typeof(testCallMethod).GetMethod("doSomethingB");//亦同
        MethodInfo mInfo = Type.GetType("testCallMethod").GetMethod("doSomethingB");
        mInfo.Invoke(this, null);
    }

    public void doSomethingA() {
        //...
    }
    public void doSomethingB() {
        //...
    }
    public void doSomethingC() {
        //...
    }
}

以上

沒有留言:

張貼留言