IronPython 스크립트 호출 C#dll 예

이전 IronPython 스크립트의 두 기사는 C#와 밀접하게 결합된 예시를 소개하였으며, C#와 더욱 밀접하게 결합된 예시를 제공하여 C#가 작성한 DLL을 직접 호출할 것이다.
우리는 여전히 이전 글의 코드를 그대로 사용했다. (사실 여기는 IronPython 디버거를 직접 사용하여 연결할 수 있으며, C#에 다시 삽입할 필요가 없다.)
참고: scriptEngine.AddToPath(Application.StartupPath); 이 코드는 dll 파일이 있는 디렉터리를 설정하는 것이 비교적 관건입니다.

  
  
  
  
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Text;  
  7. using System.Windows.Forms;  
  8. using IronPython.Hosting;  
  9.  
  10. namespace TestIronPython  
  11. {  
  12.     public partial class Form1 : Form  
  13.     {  
  14.         public Form1()  
  15.         {  
  16.             InitializeComponent();  
  17.         }  
  18.  
  19.         private void button1_Click(object sender, EventArgs e)  
  20.         {  
  21.             PythonEngine scriptEngine = new PythonEngine();  
  22.             scriptEngine.AddToPath(Application.StartupPath);   
  23.  
  24.             scriptEngine.Execute(textBox1.Text);            
  25.         }  
  26.     }  
  27. }  
  28.  

IronPython 스크립트에서 호출할 수 있는 DLL을 작성하기 시작했습니다. 두 가지 종류를 작성했습니다. 하나는 정적 함수 접근을 제공하고, 다른 하나는 속성과 일반 함수 접근을 제공하여 IronPython 스크립트에서 서로 다른 호출 방식을 구별합니다.코드는 다음과 같습니다.

  
  
  
  
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace IronPython_TestDll  
  6. {  
  7.     public  class TestDll  
  8.     {  
  9.         public static int Add(int x, int y)  
  10.         {  
  11.             return x + y;  
  12.         }  
  13.     }  
  14.  
  15.     public class TestDll1  
  16.     {  
  17.         private int aaa = 11;  
  18.         public int AAA  
  19.         {  
  20.             get { return aaa; }  
  21.             set { aaa = value; }  
  22.         }  
  23.         public void ShowAAA()  
  24.         {  
  25.             global::System.Windows.Forms.MessageBox.Show(aaa.ToString());  
  26.         }  
  27.  
  28.     }  
  29. }  
  30.  

IronPython 스크립트의 코드를 살펴보겠습니다.

  
  
  
  
  1. import clr  
  2. clr.AddReferenceByPartialName("System.Windows.Forms")  
  3. clr.AddReferenceByPartialName("System.Drawing")  
  4. from System.Windows.Forms import *  
  5. from System.Drawing import *  
  6.  
  7. clr.AddReferenceToFile("IronPython_TestDll.dll")  
  8. from IronPython_TestDll import *  
  9.  
  10. a=12  
  11. b=6  
  12. c=TestDll.Add(a,b)  
  13. MessageBox.Show(c.ToString())  
  14.  
  15. td=TestDll1()  
  16. td.AAA=100  
  17. td.ShowAAA()  
  18.  

비교적 중요한 것은 이 두 문장이다.
    

  
  
  
  
  1. clr.AddReferenceToFile("TronPython_TestDll.dll")    --  DLL  
  2.    from TronPython_TestDll import *                                  --     

정적 방법은 직접 호출할 수 있으며, 일반적인 방법은 클래스를 정의한 다음에 접근해야 한다. (IronPython 자체의 클래스에 접근하는 것과 아무런 차이가 없다.)
실행 결과는 다음과 같습니다.
     
이제 아이론 파이톤에 대한 기대와 흥미가 충만해졌는지, 손을 흔들어 그 강함을 느껴라!
 
본문은'엽범작업실'블로그에서 나왔습니다. 전재는 작가에게 연락하세요!

좋은 웹페이지 즐겨찾기