使用C#呼叫VB.NET的CallByName函式

使用C#呼叫VB.NET的CallByName函式

在VB.NET中有時會有要帶入方法名稱去執行對應方法,或是依屬性名稱去取得、設定其屬性值的需求,若不想使用麻煩的反射去處理,我們可以簡單的使用CallByName函式去達到這樣的需求。

 

若是在C#中想要使用VB.NET中的CallByName函式,我們可以將Microsoft.VisualBasic.dll加入參考。

image

 

並在程式碼上方加入Microsoft.VisualBasic與Microsoft.VisualBasic.CompilerServices這兩個命名空間

using Microsoft.VisualBasic.CompilerServices;

 

就可以透過Versioned類別的CallByName方法使用VB.NET的CallByName函式,就像下面這樣:

using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.VisualBasic;
using Microsoft.VisualBasic.CompilerServices;
using System.Data;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
	    ...
            foreach (DataRow dr in dt.Rows)
            {
                foreach (DataColumn dc in dt.Columns)
                {
                    Versioned.CallByName(obj, dc.ColumnName, CallType.Set, dr(dc.ColumnName));
                }
            }
        }
    }
}