PythonオブジェクトをC#から呼び出す簡単な方法はありますか?C#でPythonオブジェクトを使用
6
A
答えて
1
このpostをご覧ください。
8
はい、IronPythonをホストします。
6
現在リリースされているC#のバージョンでは、何らかの種類のブリッジ層を使用せずにこれを実現する素晴らしい方法はありません。 IronPythonをある程度までホストすることはできますが、IronPythonの動的機能を活用するのは難しいでしょう.C#は静的な型指定言語なので、
IronPythonと言えば、C#4.0はそれと相互作用することができます一見、 C#4.0では、DLR上で実行されているすべての言語で動作する新しい機能calldh dynamicが導入されています。
dynamic d = GetSomePythonObject();
d.SomeMethod();
5
私は3つの方法を知っている
:
1)を使用する鉄のPython、およびあなたのPythonのプロジェクトは、C#で書かれたプロジェクトと自由に対話することができます。
2)Python関数をCOMに公開します。 Iron Pythonに変換したくない、または変換できないPythonライブラリを使用する必要がある場合は、これを行うでしょう。 "COM mess"はそれほど悪くはありませんPythonコードとC#コードが同じマシン上で実行されています。 this tutorialからこのコードは、それが過度に醜いではないことを示している:
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#とPythonは、ソケットを介して通信持っ。 Iron Pythonに変換できないコードがあり、それをリモートからアクセスする必要がある場合は、これを行います。 これは、引数や値をバイトや文字列から整列化してアンマーシャリングする必要があるため、ほとんどの作業を必要としますが、C#でリモートのPythonプロセスと話をする必要があるときは、
関連する問題
- 1. PythonでEigenオブジェクトを使用する
- 2. cでのC++オブジェクトの使用
- 3. C/C++でのPythonコードの使用
- 4. Objective-Cオブジェクトでmalloc/freeを使用
- 5. C/Python API:Py_BuildValueの使用
- 6. C#.NETでCOMオブジェクトを使用するとC#.NETでオブジェクトが返される
- 7. C#:オブジェクトで使用するクラス
- 8. C#オブジェクトでのCrystal Reportsの使用
- 9. PythonでのC++ DLLの使用
- 10. c-extensionでのPythonロギングモジュールの使用
- 11. PythonのアクセスC共有オブジェクト
- 12. C#静的オブジェクトでのブロック使用の使用
- 13. Python C API:PyEval_EvalCodeを使用して
- 14. C++/CLIで使用される動的なC#オブジェクト
- 15. Objective-Cブロック - オブジェクトとして使用
- 16. C#console-projectのCOMオブジェクトの使用
- 17. C++クラス/オブジェクト関数の使用クエリ
- 18. MinGWコンパイラでC++でCOMオブジェクトを使用する
- 19. C#プロジェクトでCOMオブジェクトを使用できますか?
- 20. LinuxでC++でboost-pythonを使用する
- 21. Python C API:Cエクステンションのプロパティデコレータの使用
- 22. C++で異なるアロケータを使用してオブジェクトをコピーする
- 23. CプログラムのC++共有オブジェクトを使用しますか?
- 24. Python <-> C++オブジェクト指向コミュニケーション
- 25. Python C-APIオブジェクトの割り当て
- 26. PythonオブジェクトからC++へのポインタ問題
- 27. カスタムHtmlHelperでC#オブジェクトを使用するには?
- 28. Objective-Cでローカル静的オブジェクトを使用するには?
- 29. C#でEMGU CVを使用したオブジェクト検出
- 30. Objective-Cでオブジェクトをキーとして使用する方法