Bu senaryoyu çalıştırmanın bir yolu var mı?Python komut dosyaları oluşturun ve yöntemleri arayın C#
Bir Python betiği var. O IronPython ile bu script çalıştırarak bir DLL yerleşik:
import clr
clr.CompileModules("CompiledScript.dll", "script.py")
gol C# kodu bu DLL yöntemlerini aramak. .NET Reflector, DLL'de bir sınıf olduğunu gösterir - DLRCashedCode
ve ilgilendiğimiz yöntemler bu sınıfın özel statik yöntemleridir.
def scriptMethod(self, text):
...
DLL Onun gösterimidir: Örneğin:
, komut bir işlevi vardır
private static object scriptMethod(Closure closure1, PythonFunction $function, object self, object text)
{
...
}
Closure
ve PythonFunction
Microsoft.Scripting.dll gelen IronPython sınıfları (ve IronPython.dll). Şimdiye kadar çok iyi. Bu yöntem C# koduyla çağrılabilir mi? Metodun parametrelerini ayarlaması nedeniyle gibi yansımayı kullanma düşüncesi daha zor gözükmektedir. Doğru şekilde başlatılmışlarsa, yöntemin sorunsuz çalışmasını bekleyebilir miyiz?
Bu yöntemleri C# olarak adlandırmanın daha iyi bir yolu var mı? Çeşitli farklı nedenlerle, betiğin bir .NET derlemesi olarak oluşturulmasını ve komut dosyasının kendisini çağırmamasını tercih ediyoruz.
Jeff Hardy'nin yanıtı, bir ScriptEngine'den derlenmiş dll/python sınıfını kullanmanın daha doğrudan bir yolu olup olmadığımı merak etmemi sağlıyor… – djlawler
Kodu biraz kolaylaştırdım ve bir python yöntemine çağrı ekledim. Ayrıca, bunu (bu yardımcı olabilir) buldum: http://codingbox.blogspot.com/2009_11_01_archive.html – djlawler
Bunu yapmak için daha doğrudan bir yol için http://pastie.org/797185 göz atın. –