Lớp IronPython là không Lớp .NET. Chúng là các cá thể của IronPython.Runtime.Types.PythonType, đây là lớp metaclass của Python. Điều này là do các lớp Python là động và hỗ trợ bổ sung và loại bỏ các phương thức trong thời gian chạy, những thứ bạn không thể làm với các lớp .NET.
Để sử dụng các lớp Python trong C#, bạn sẽ cần phải sử dụng lớp ObjectOperations. Lớp này cho phép bạn hoạt động trên các kiểu trăn và các cá thể trong ngữ nghĩa của chính ngôn ngữ đó. ví dụ. nó sử dụng các phương pháp ma thuật khi thích hợp, tự động quảng bá các số nguyên đến độ dài, vv Bạn có thể tìm hiểu thêm về ObjectOperations bằng cách nhìn vào nguồn hoặc sử dụng phản xạ.
Đây là một ví dụ. Calculator.py chứa một lớp đơn giản:
class Calculator(object):
def add(self, a, b):
return a + b
Bạn có thể sử dụng nó từ trước NET 4.0 mã của bạn C# như thế này:
ScriptEngine engine = Python.CreateEngine();
ScriptSource source = engine.CreateScriptSourceFromFile("Calculator.py");
ScriptScope scope = engine.CreateScope();
ObjectOperations op = engine.Operations;
source.Execute(scope); // class object created
object klaz = scope.GetVariable("Calculator"); // get the class object
object instance = op.Call(klaz); // create the instance
object method = op.GetMember(instance, "add"); // get a method
int result = (int)op.Call(method, 4, 5); // call method and get result (9)
Bạn sẽ cần phải tham khảo các hội IronPython.dll, Microsoft. Scripting và Microsoft.Scripting.Core.
C# 4 làm việc này dễ dàng hơn nhiều với loại động mới mới.
ScriptEngine engine = Python.CreateEngine();
ScriptSource source = engine.CreateScriptSourceFromFile("Calculator.py");
ScriptScope scope = engine.CreateScope();
source.Execute(scope);
dynamic Calculator = scope.GetVariable("Calculator");
dynamic calc = Calculator();
int result = calc.add(4, 5);
Nếu bạn đang sử dụng Visual Studio 2010 trở lên với NuGet, chỉ cần thực hiện thao tác này để tải xuống và tham khảo thư viện thích hợp.
Install-Package IronPython
tôi không có đại diện để chỉnh sửa , nhưng trong mẫu Calculator.py, dấu "def" đầu tiên sẽ được thụt vào. Ví dụ tuyệt vời, mặc dù! Rất hữu ích. Bây giờ .Net 4.0 đã hết, sẽ rất tuyệt khi thấy một ví dụ được cập nhật. –
Đã thêm ví dụ .Net 4.0, sử dụng cùng một lớp mẫu Máy tính của bạn. –
Cảm ơn, tôi đã thêm thụt lề. –