2019年2月14日 星期四

[C# ASP.NET]ASP.NET中類似於ASP的CreatObject程式寫法

最近在將網頁由 ASP修改成 ASP.NET的途中,
發現到.NET由參考方式去呼叫 COM+元件的寫法,
是沒辦法DeBug進入 COM+本身的程式碼(COM+由VB6撰寫),
每次修改完 COM+都必須重新compiler成dll檔,並重新掛上元件服務和引用參考,
才可以知道執行上是否有問題.
這和ASP版本的 CreatObject可以直接進行偵錯比起來十分不方便.

所以上網查找有沒有類似的寫法,偵錯時可以直接進入到COM+程式碼,
最後找到並寫出以下較方便偵錯的方法,

需要引用 using System.Reflection 命名空間

//COMName: COM+名稱
//COMMethod: COM+方法
//oArgument: 方法要用到的參數
//回傳:結果字串

private string CallCOMObject(string COMName, string COMMethod, object[] oArgument)
{
     //要回傳的訊息
     string StrErr = "";

     try
     {
          //取得COM+元件的型別
          System.Type oType1 = System.Type.GetTypeFromProgID(COMName);
          //依型別建立物件參考
          object oCOM = Activator.CreateInstance(oType1);

          object oResult;
          //呼叫執行物件的方法,並回傳結果
          oResult = oType1.InvokeMember(COMMethod, BindingFlags.InvokeMethod, null, oCOM, oArgument);

          StrErr = oResult.ToString();

          oCOM = null;
          oResult = null;
     }
     catch (Exception E)
     {
          StrErr = E.ToString();          
     }
     return StrErr;
}

參考:
https://www.codeproject.com/Articles/1511/Accessing-COM-component-using-C

沒有留言:

張貼留言