Wednesday, November 21, 2012

[C#] Dynamic Calling Method by String 用字串動態呼叫方法

有同學問了我一個問題,他有一個 Class 裡有一堆 Method ,因為每個 Method 都對應不同情況去使用,目前是用 Switch Case 去判斷使用哪個方法,但是如果數量增加到上百上千的時候,還在用 Switch Case 感覺有點笨,於是想問問看能不能有方法去改得更聰明。

查了一下MSDN,發現有個叫做 Type.InvokeMember 的方法可以做到這點,我寫了個簡單的範例在下面,這根據所需還有很多變化方式可以做,就不一一列出了,有需要可以參考MSDN上的說明。

/// Dynamic Calling Method by String
/// </summary>
/// <param name="methodName">Method Name </param>
/// <param name="stringParam">Parameter</param>

public static void InvokeStringMethod(string methodName, string stringParam)
        {
            Type calledType = typeof(Program);//Program是我那個class的名字

            calledType.InvokeMember(
                        methodName,
                        BindingFlags.InvokeMethod | BindingFlags.Public |
                            BindingFlags.Static,
                        null,
                        null,
                        new Object[] { stringParam });

        }

No comments:

Post a Comment