2010-06-03 12 views
5

का एकीकरण मुझे बताया गया था कि सी # और एफ # स्रोत से बनाई गई असेंबली फाइलें इंटरऑपरेबल हैं क्योंकि उन्हें .NET असेंबली में संकलित किया गया है।सी #, एफ #, आयरनपीथन और आयरनरुबी

  • प्रश्न 1: क्या इसका मतलब यह है कि सी # एफ # कार्यों को कॉल कर सकता है जैसे कि वे सी # फ़ंक्शन हैं?
  • प्रश्न 2: आयरनपीथन और आयरनरुबी के बारे में कैसे? मुझे आयरनपीथन/आयरनरुबी से कोई असेंबली डीएल नहीं दिखाई देता है।
  • प्रश्न 3: क्या सी # या एफ # से आयरनपीथन/आयरनआरबी कार्यों का उपयोग करने का कोई आसान तरीका है?

कोई भी उदाहरण कोड बहुत अच्छा होगा।

उत्तर

5

1) हां। एक सरल उदाहरण का उपयोग करना, एफ # में, मैं एक सी # कंसोल एप्लिकेशन की मुख्य विधि आह्वान कर सकते हैं:

open SampleApp 

SampleApp.Program.Main([| "Hello"; "World" |]) 

2) डीएलआर के लिए, मुझे लगता है कि चीज़ें थोड़ी अलग है। मेरा मानना ​​है कि इस तरह आप पाइथन निष्पादित करेंगे (उदाहरण के लिए);

ScriptEngine engine = Python.CreateEngine(); 
ScriptSource script = engine.CreateScriptFromSourceFile("myPythonScript.py"); 
ScriptScope scope = engine.CreateScope(); 

script.Execute(scope); 

मेरा वाक्यविन्यास थोड़ी दूर हो सकता है - लेकिन आपको यह समझने में सक्षम होना चाहिए।

3) आपको कुछ विशेष डीएलआर डीएलएल डाउनलोड करने की आवश्यकता है - और फिर इंटरऑपरेबल होने के लिए उन्हें अपने सी #/एफ # एप्लिकेशन में संदर्भित करें। वे माइक्रोसॉफ्ट डीएलआर साइट से उपलब्ध होना चाहिए।

3

मुझे बताया गया था कि विधानसभा फ़ाइलों सी # और एफ # स्रोत से बने अंतर-संचालित है के रूप में वे नेट विधानसभा में संकलित कर रहे हैं।

हां, आप एक सी # एक में एफ # असेंबली का संदर्भ दे सकते हैं। जब आप उनका संदर्भ देते हैं तो एफ # ऑब्जेक्ट्स आदि सी # वाले की तरह काम करेंगे।

आप सी # में आयरनपीथन/रूबी कोड तक भी पहुंच सकते हैं, हालांकि यह सिर्फ एक असेंबली का संदर्भ देने से थोड़ा अलग है। यहाँ एक उदाहरण है:

http://www.highoncoding.com/Articles/573_First_Look_at_the_IronRuby.aspx

2

प्रश्न 3: क्या सी # या एफ # से आयरनपीथन/आयरनआरबी कार्यों का उपयोग करने का कोई आसान तरीका है?

आप Embedding IronPython into a C# application

मूल रूप से

, यह क्या करता है (सरलीकृत कोड) पर एक नज़र हो सकता है:

var engine = Python.CreateEngine(); 
var scriptSource = engine.CreateScriptSourceFromString(@" 
def foo(s): 
    print s", SourceCodeKind.Statements); 

var scope = engine.CreateScope(); 
scriptSource.Execute(scope); 

//Get a reference to the function 
Func<string, decimal> foo = scope.GetVariable<Func<string, decimal>>("foo"); 

//Execute it 
Console.WriteLine(foo("a")); 
संबंधित मुद्दे