程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 與動態執行的C#代碼進行通訊(3)

與動態執行的C#代碼進行通訊(3)

編輯:關於C語言

BuildFullCmd方法改變為:

    private String BuildFullCmd(String inputCmdString)
     {
       String fullCmd = String.Empty;
       fullCmd += @"
           using Test;
           public class DynamicClass
           {
             private Context m_context;
             public void MethodInstance(Context context)
             {
               m_context = context;
               " + inputCmdString + @";
             }
           }";
       return fullCmd;
     }

這樣,在動態生成的對象中,便可以引用Context對象。

對於inputCmdString 中未定義的外部變量,在第一次遇見時將$argname替換為一個隨機生成的內部變 量,在代碼的最後,將這個內部變量儲存在 Context 中。

雖然通過 (Context[argname].GetType())(Context[argname]) 便可引用外部變量 $argname,但是這 樣引用賦值時,編譯器會報錯。解決這個問題需要一個新的類:

  public class ObjectHelper<T>
   {
     private String m_objName;
     public Context Context { get; private set; }
     public T Obj
     {
       get
       {
         Object obj = Context[m_objName];
         return (T)obj;
       }
       set { Context[m_objName] = value; }
     }
     public ObjectHelper(Context cxt, String objName)
     {
       m_objName = objName;
       Context = cxt;
     }
   }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved