none
如何呼叫執行資料庫欄位內容中的.NET Class方法? RRS feed

  • 問題

  •  

    請問:

     

    我的資料表中,有個欄位型態是字串,裡面放置我自己寫的Class的方法與參數,例如:

    objClass.MyMethod(Parm1, Parm2),不需要回傳值回來

     

    請問,我能否在讀取資料表的欄位之後,獲得這欄位中的字串後,呼叫執行這個字串呢?

    麻煩解答,謝謝您!

    2008年4月16日 上午 02:17

所有回覆

  • HI,

     

    您可以利用CodeDom名稱空間提供的類別將字串的內容建置成程式再執行, 請參考:

     

    http://msdn2.microsoft.com/en-us/library/y2k85ax6.aspx

     

    tihs

     

    2008年4月16日 上午 02:23
  • 很抱歉!我實在看不太懂連結中的範例,範例中使用的是.NET已經提供的ClassLibrary中的System.Concole.WriteLine來列印Hello World,我的則是自己撰寫的Class,一般使用的使用方法為:

    dim obj as new MyClass

    obj.MyMethod(parm1,parm2)

    這樣我嘗試套到範例程式碼中,修改了一行程式碼,如下:

     

    Dim cs1 As New CodeMethodInvokeExpression( _
        New CodeTypeReferenceExpression("obj"), _
        "MyMethod", _
        New CodePrimitiveExpression("parm1,parm2") )

     

    執行後沒有錯誤,可是也沒有對資料庫產生任何寫入作用,不知道該如何解決?

     

     

    麻煩您的協助

     

    2008年4月16日 上午 06:36
  • 如果自己撰寫的Dll已經ready也Load進來到Process的話, 呼叫Activator.CreateInstanceFrom或Activator.CreateInstance建立你Class的instance, 然後執行即可.

    如果沒有Load進來, 請先Load Dll先.

     

    但是如果自己寫的Class並未有dll存在, 請參考Emit name space, 他可以辦到你想做的事.

     

    不過給個良心建議, 記得要測試一下performance, Reflection 跟 Emit 最怕的就是效能問題. 我痛過, 痛到Project廢掉.

    2008年8月1日 上午 09:15