1. 程式人生 > >[技巧.Dotnet]反射呼叫COM元件的方法、引數為ref型別

[技巧.Dotnet]反射呼叫COM元件的方法、引數為ref型別

string strSource;           //從儀器接收到的原始資料
string strResult = "";      //檢驗結果字串
string strReserved = "";    //本次未解析完的資料
string strCmd = "";         //應答指令

strSource = "xxxx";

//獲取COM型別
Type type = Type.GetTypeFromProgID("zlLISDev.clsLISDev_ABL800");
//建立COM型別示例
object instance = Activator.CreateInstance(type);
//引數構造
//注意:需要通過ParameterModifier顯示指定哪些引數是引用型別
object[] args = new object[] { strSource, strResult, strReserved, strCmd };
ParameterModifier argsMod = new ParameterModifier(4);
argsMod[1] = true;
argsMod[2] = true;
argsMod[3] = true;
ParameterModifier[] mods = { argsMod };
//反射呼叫方法
type.InvokeMember( "Analyse", BindingFlags.InvokeMethod, null, instance, args, mods, null, null);

regsvr32 zlLISDev.dll
TlbImp.exe zlLISDev.dll /namespace:zlLISDev /out:Interop.zlLISDev.dll