//程序集引用方式 int int111 = 0; string str111 = ""; bool ret1 = new ClsITestData().GetRtf("Debug_Pas", "022_0714_1654_55", out string rtf, ref int111, ref str111); string msg1 = rtf; //COM調用 string str = ""; Type type = Type.GetTypeFromProgID("ProgIDxxxxxx"); //創建COM類型 object obj = Activator.CreateInstance(type); //創建類型實例 object[] invokeParas = new object[] { "Debug_Pas", "022_0714_1654_55", str, null, null }; //參數對象數組 bool ret2 = (bool)type.GetMethod("GetRtf").Invoke(obj, invokeParas); //Invoke執行 string msg2 = invokeParas[2].ToString(); //取參數值
public static object ProgIDInvoke(string progid, string methodName, ref object[] paras) { Type type = Type.GetTypeFromProgID(progid); object obj = Activator.CreateInstance(type); return type.GetMethod(methodName).Invoke(obj, paras); } public static void ProgIDInvokeVoid(string progid, string methodName, ref object[] paras) { Type type = Type.GetTypeFromProgID(progid); object obj = Activator.CreateInstance(type); type.GetMethod(methodName).Invoke(obj, paras); } public static object ClsIDInvoke(Guid clsid, string methodName, ref object[] paras) { Type type = Type.GetTypeFromCLSID(clsid); object obj = Activator.CreateInstance(type); return type.GetMethod(methodName).Invoke(obj, paras); } public static void ClsIDInvokeVoid(Guid clsid, string methodName, ref object[] paras) { Type type = Type.GetTypeFromCLSID(clsid); object obj = Activator.CreateInstance(type); type.GetMethod(methodName).Invoke(obj, paras); }