2013-02-12 11 views
5

से स्वचालित कोड जनरेशन मैं जावास्क्रिप्ट समकक्ष में सी # में लिखी गई कक्षा का खुलासा करना चाहता हूं।सी # कक्षा से जावास्क्रिप्ट समकक्ष

उदाहरण के लिए

मैं एक वर्ग की तरह है:

// C# class to represent an Appriaser 
public class Appraiser 
{ 
    public Appraiser(appraiserId, appraiserName) 
    { 
     AppraiserId = appraiserId; 
     AppraiserName = appraiserName; 
    } 
    public int AppraiserId { get; set; } 
    public string AppraiserName { get; set; } 
} 

और मैं अपने आप जावास्क्रिप्ट

// javascript class to represent an Appraiser 
function Appraiser(appraiserId, appraiserName) { 
    var self = this; 
    self.appraiserid= appraiserId; 
    self.appraisername= appraisername; 
} 

में इस वर्ग का एक संस्करण उत्पन्न करने की क्षमता चाहते हैं JSON.NET या के साथ इस संभव है एक और तरीका?

+0

देखें http://stackoverflow.com/questions/3455456/how-to-translate-between-programming-languages/3460977#3460977 –

+1

मुझे लगता है कि कोई भी उसी चीज़ के लिए स्वैगर (अब ओपनएपीआई) का उपयोग कर सकता है (अब) –

उत्तर

1

मैं जानता हूँ कि मैं एक पुराने सवाल necro'ing हूँ, लेकिन उसके लिए कुछ विकल्प है इन दिनों।

विजुअल स्टूडियो के लिए Class to Knockout Generator है जो आपके लिए नॉकआउट व्यूमोडेल बनाएगा। साथ ही, यदि आप टाइपस्क्रिप्ट में आते हैं - क्लास पर वेब अनिवार्य "जेनरेट टाइपस्क्रिप्ट" विकल्प का उपयोग करके आपको वहां बहुत कुछ मिल जाएगा।

+1

जेसन, महान खोज! मैंने वास्तव में यह प्रश्न भी पोस्ट करने के कुछ समय बाद परियोजना को पाया था। अभी भी वास्तव में बहुत अच्छा लगता है। मुझे वास्तव में ऐसा लगता है कि वीएस को सी # पीओसीओ को टाइपस्क्रिप्ट पीओसीओ ओओबी में परिवर्तित करने में सक्षम होना चाहिए। –

+1

मुझे वेब अनिवार्यताएं मिली हैं ... अच्छी तरह से आवश्यक ... विजुअल स्टूडियो में जोड़ने के लिए एक्सटेंशन। इसमें सी # कक्षाएं लेने और उनसे टाइपस्क्रिप्ट परिभाषाएं बनाने की क्षमता है - साथ ही स्वचालित रूप से कम से कम सीएसएस को सीएसएस को छोटा सीएसएस, साथ ही जेएस को कम करने के लिए जेएस को संभालती है। यह वास्तव में एक सब कुछ है जो यह कर सकता है के साथ एक स्पिफी उपयोगिता है। मैं इसे एक शॉट देने की सिफारिश करता हूं। मुझे तेजी से संरचित दृश्यमान बनाने के लिए नॉकआउट जेनरेटर पसंद है। यह मुझे अब तक जेएस के साथ काम करने के लिए एक खोल देने के लिए मिला है। – Jason

1

हां और नहीं। लेकिन अधिक "नहीं" '।

से "हाँ कुछ भी नहीं है जो सीधे अपने नेट वर्गों से जावास्क्रिप्ट वर्गों पैदा करेगा नहीं है। आप डेटा आगे आगे और है, जो @ jbabey के लिंक के बारे में है क्या है पारित कर सकते हैं, लेकिन आप उन्हें दूसरे के स्थान पर उपयोग नहीं कर सकते।

आप लिखने सी # कोड है जो प्रतिबिंब का उपयोग करके के रूप में वे प्रस्तुत करना (ताकि आप दूसरे छोर पर एक वस्तु को वापस JSON में बदल सकते हैं) पृष्ठ पर कक्षाएं लिखते थे पुनरावृत्ति करने के लिए कर सकता है सभी सार्वजनिक गुणों और रचनाकारों पर, लेकिन आप अभी भी कार्यक्षमता की प्रतिलिपि बनाने में सक्षम नहीं होंगे।

+0

मैं वास्तव में कॉपी करने के तरीकों की कार्यक्षमता की तलाश नहीं कर रहा था। मैं सिर्फ गुणों से खुश रहूंगा।मैं बस कुछ ही मिनट पहले उम्मीदवार के रूप में स्क्रिप्ट # पर एक नज़र डाल रहा था लेकिन अभी तक कोशिश नहीं की है। चूंकि .NET * कार्यक्षमता * प्रदान करता है जैसे पहले से ही सी # से आईएल, आई # से आईएल, और वीबी.नेट आईएल में मुझे लगता था कि एक ही चीज़ सी # को जावास्क्रिप्ट में उपलब्ध हो सकती है। –

3

आप JSIL आज़मा सकते हैं। यह आपको .NET IL से जावास्क्रिप्ट में बदलने की अनुमति देगा।

1

पता चला कि निक हिल्क के पास स्क्रिप्ट # नामक एक प्रोजेक्ट है जो सी # 2.0 कोड से जावास्क्रिप्ट समकक्ष उत्पन्न करेगा। इसने सरल सी # कक्षा के लिए जावास्क्रिप्ट घटकों के लिए अपने प्रश्न को प्रभावी ढंग से हल किया। वास्तव में साफ बात यह है कि स्क्रिप्ट # jQuery और मेरे नॉकआउट व्यू मॉडल के साथ भी अच्छी तरह से काम करेगा! :-)

Link to Script#

+1

वह लिंक पुराना है। यहां जिथब रेपो है: https://github.com/nikhilk/scriptsharp – hofnarwillie

2

आप sharp2Js को आजमा सकते हैं। आप इसे एक प्रकार से गुजरते हैं और यह इसे सी # स्ट्रिंग में परिवर्तित करता है। यदि आप इसे जेएस फ़ाइल में आउटपुट करना चाहते हैं तो इसे T4 टेम्पलेट के साथ उपयोग करें। अपने उदाहरण में वर्ग के लिए, यह पैदा करता है:

अपने उदाहरण के साथ इसे का उपयोग करना:

var str = Castle.Sharp2Js.JsGenerator. 
       GenerateJsModelFromTypeWithDescendants(typeof(Appraiser), true, "example"); 

आउटपुट:

example = {}; 

example.Appraiser = function (cons, overrideObj) { 
    if (!overrideObj) { overrideObj = { }; } 
    if (!cons) { cons = { }; } 
    var i, length; 
    this.appraiserId = cons.appraiserId; 
    this.appraiserName = cons.appraiserName; 


    this.$merge = function (mergeObj) { 
     if (!mergeObj) { mergeObj = { }; } 
     this.appraiserId = mergeObj.appraiserId; 
     this.appraiserName = mergeObj.appraiserName; 
    } 
} 

नोट: मैं sharp2Js के मेंटेनर हूँ, यह युवा है, इसलिए नहीं फीचर समृद्ध अभी तक (किसी भी सुझाव का स्वागत है) लेकिन यह सरल उपयोगों के लिए आपकी आवश्यकताओं के अनुरूप हो सकता है।

संबंधित मुद्दे