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. cでのC++オブジェクトの使用
- 2. PythonでEigenオブジェクトを使用する
- 3. C/C++でのPythonコードの使用
- 4. Objective-Cオブジェクトでmalloc/freeを使用
- 5. python -c '...'のローカルPythonモジュールを使用
- 6. Python GUIでCアプリケーションを使用する
- 7. Pythonオブジェクト内で宣言されたC++ std :: mutexを使用する
- 8. C#.NETでCOMオブジェクトを使用するとC#.NETでオブジェクトが返される
- 9. C#オブジェクトでのCrystal Reportsの使用
- 10. C#:オブジェクトで使用するクラス
- 11. C/Python API:Py_BuildValueの使用
- 12. c-extensionでのPythonロギングモジュールの使用
- 13. PythonでのC++ DLLの使用
- 14. C#静的オブジェクトでのブロック使用の使用
- 15. PythonのアクセスC共有オブジェクト
- 16. C++/CLIで使用される動的なC#オブジェクト
- 17. サブプロセスを使わずに直接PythonオブジェクトをC++プログラムに渡す
- 18. PythonとC#を使用したクライアントサーバーアーキテクチャ
- 19. Python C API:PyEval_EvalCodeを使用して
- 20. C#プロジェクトでCOMオブジェクトを使用できますか?
- 21. MinGWコンパイラでC++でCOMオブジェクトを使用する
- 22. C#console-projectのCOMオブジェクトの使用
- 23. C++クラス/オブジェクト関数の使用クエリ
- 24. /clrのアンマネージC++オブジェクトの使用
- 25. Objective-Cブロック - オブジェクトとして使用
- 26. CプログラムのC++共有オブジェクトを使用しますか?
- 27. Pythonでは、オブジェクト "name"として変数を使用します。
- 28. Pythonでオブジェクトの型を使用するには?
- 29. C#でjsonスキーマを使用してオブジェクトを検証する
- 30. C++で異なるアロケータを使用してオブジェクトをコピーする