Có cách nào dễ dàng để gọi các đối tượng Python từ C#, đó là không có bất kỳ sự lộn xộn COM nào không?sử dụng các đối tượng Python trong C#
Trả lời
Bạn có thể xem số post này.
Có, bằng cách lưu trữ IronPython.
Trong phiên bản hiện tại được phát hành của C#, không có cách nào tuyệt vời để đạt được điều này mà không cần sử dụng một số loại lớp cầu. Bạn có thể lưu trữ nó IronPython đến một mức độ nhưng khó có thể tận dụng các tính năng động của IronPython vì C# là một ngôn ngữ được đánh máy rất tĩnh
Nếu bạn đang nói về IronPython, C# 4.0 sẽ có thể tương tác với điều đó không có vẻ. C# 4.0 đang giới thiệu tính năng calldh mới cho phép nó hoạt động với bất kỳ ngôn ngữ nào đang chạy trên DLR.
dynamic d = GetSomePythonObject();
d.SomeMethod();
Tôi biết 3 cách:
1) Sử dụng Iron Python và các dự án Python của bạn có thể tương tác tự do với các dự án được viết bằng C#.
2) Hiển thị hàm Python của bạn với COM. Bạn sẽ làm điều này nếu bạn cần sử dụng các thư viện Python mà bạn không muốn hoặc không thể chuyển đổi sang Iron Python (EG, nếu bạn chỉ có một DLL.) "COM mess" không thực sự quá tệ, nếu mã Python và mã C# của bạn đang chạy trên cùng một máy. Mã này từ this tutorial cho thấy rằng nó không phải là quá xấu xí:
class PythonUtilities:
_public_methods_ = [ 'SplitString' ]
_reg_progid_ = "PythonDemos.Utilities"
# NEVER copy the following ID
# Use "print pythoncom.CreateGuid()" to make a new one.
_reg_clsid_ = "{41E24E95-D45A-11D2-852C-204C4F4F5020}"
def SplitString(self, val, item=None):
import string
if item != None: item = str(item)
return string.split(str(val), item)
# Add code so that when this script is run by
# Python.exe, it self-registers.
if __name__=='__main__':
print "Registering COM server..."
import win32com.server.register
win32com.server.register.UseCommandLine(PythonUtilities)
3) Có C# và Python giao tiếp thông qua ổ cắm. Bạn sẽ làm điều này nếu bạn có mã bạn không thể chuyển đổi sang Iron Python và bạn cần truy cập nó từ xa. Điều này đòi hỏi công việc nhiều nhất bởi vì bạn cần marshall và unmarshall các đối số và trả về giá trị từ byte hoặc chuỗi, nhưng đó là những gì một nhóm của tôi đã làm khi chúng tôi cần để làm cho C# nói chuyện với một quá trình Python từ xa.
- 1. Sử dụng id đối tượng làm băm cho các đối tượng trong Python
- 2. Đối tượng Python từ các đối tượng hiện có bằng cách sử dụng __new__
- 3. Sử dụng biểu diễn __str__ cho các đối tượng in trong các thùng chứa trong Python
- 4. Tìm hiểu các đối tượng trong Python
- 5. Python, tạo các đối tượng
- 6. Gõ một đối tượng bằng cách sử dụng đối tượng "Loại" trong C#
- 7. Sử dụng các đối tượng ẩn trong các lớp
- 8. đối tượng struct trong python
- 9. Python Selenium: Tìm đối tượng thuộc tính sử dụng xpath
- 10. Tạo các đối tượng trong Loop C#
- 11. khởi tạo các đối tượng trong C++
- 12. Sử dụng mã Python trong C/C++
- 13. Chuyển đối tượng C++ sang mã C++ thông qua Python?
- 14. JSON.NET đối với các đối tượng C#
- 15. định dạng các đối tượng timedelta python
- 16. Chuyển đối tượng đến mô-đun C, trong Python
- 17. Sử dụng .each trên các đối tượng động trong jQuery?
- 18. Sử dụng phương pháp động C# cho một đối tượng
- 19. Tìm kiếm danh sách các đối tượng trong Python
- 20. Tìm đối tượng con trong danh sách các đối tượng cha bằng cách sử dụng LINQ
- 21. Sử dụng đối tượng Shell trong Gjs
- 22. python gắn liền với các mảng trong đối tượng json
- 23. Xóa đối tượng khỏi danh sách đối tượng trong python
- 24. Khởi tạo danh sách các đối tượng trong Python
- 25. Cách sử dụng đối tượng C# từ F #?
- 26. biệt tượng trưng sử dụng các mẫu biểu trong C++
- 27. đối tượng là các khóa trong từ điển python
- 28. Khởi tạo đối tượng COM cũ trong C# động (sử dụng ID của nó trong chuỗi)
- 29. Lưu đối tượng sử dụng biến với tên đối tượng
- 30. API Python C++: "Biến tĩnh" cho đối tượng kiểu