मुझे यकीन है कि यह एक बहुत ही अजीब आवश्यकता है, लेकिन यहां जाता है।मैं एक एएसपी.नेट एमवीसी वेबसाइट के भीतर से डाउनलोड करने योग्य सी # कक्षा कैसे उत्पन्न कर सकता हूं?
हमारे पास कुछ ग्राहक विन्यास कोड है जो सी # कक्षाओं द्वारा दर्शाया गया है जिसे हम कक्षा पुस्तकालय में संकलित करते हैं। इन विन्यास वर्गों को बनाना वर्तमान में बंदर का काम है जिसे मैं किसी डेवलपर के अलावा किसी अन्य को असाइन करना चाहता हूं। इसलिए हम एक "कॉन्फ़िगरेटर" वेबसाइट बना रहे हैं जो एक व्यावसायिक विश्लेषक चयनित सी # कक्षाओं को चयनित प्रासंगिक विकल्पों के साथ फ़ॉर्म भरकर उपयोग कर सकता है।
एमवीसी वेबसाइट में टेम्पलेट से सी # कक्षा उत्पन्न करने का सबसे अच्छा तरीका क्या है? ध्यान दें कि मैं गतिशील रूप से उत्पन्न करने और रनटाइम पर कक्षा को निष्पादित करने के बारे में बात नहीं कर रहा हूं: हम अनिवार्य रूप से एक टेक्स्ट फ़ाइल उत्पन्न कर रहे हैं जो सी # कोड को शामिल करने के लिए होता है जिसे पूरी तरह से अलग परियोजना में शामिल किया जाएगा।
यह ठीक से Google के लिए एक बहुत ही कठिन विषय साबित हो रहा है! विकल्प अब तक आए कि है ...
- सिर्फ एक tokenized पाठ फ़ाइल का उपयोग और String.Format का उपयोग कर मूल्यों की जगह
- किसी तरह एक templating इंजन के रूप में उस्तरा उपयोग करें (लेकिन यकीन नहीं कैसे, और यह हम HTML नहीं कर रहा है 'फिर से पैदा करने)
- किसी भी तरह टी -4 टेम्पलेट्स (कम से कम मुझे यकीन है कि रनटाइम पर अमल करने के लिए कि यह कैसे सी # उत्पन्न करने के लिए प्रयोग किया जाता है पता है, लेकिन नहीं)
कैसे सबसे अच्छा यह दृष्टिकोण पर कोई भी विचार का उपयोग करें?
अनुरोध के रूप में, यहां आउटपुट क्लास/फ़ाइल का एक उदाहरण दिया गया है। यहां क्लाइंट-विशिष्ट लेबल, सत्यापन आदि के साथ बेस क्लास में सेट मानों को ओवरराइड मानते हैं। इस प्रकार हम ग्राहकों के लिए अपने उत्पाद को कस्टमाइज़ करते हैं।
public class AreaRiskTemplate: AreaRiskTemplateBase
{
public override string EntityName { get { return "risk"; } }
public override string EntityNamePlural { get { return "risks"; } }
public override string EntityNameArticle { get { return "a"; } }
public override string CGovItemRefPrefix { get { return "R"; } }
public override void SetFieldDefinitions()
{
FieldDefinitions.Level1.IsImplemented = true;
FieldDefinitions.Level1.Label = "Category";
FieldDefinitions.Level1.IsVisibleInGrid = true;
FieldDefinitions.Level2.IsImplemented = true;
FieldDefinitions.Level2.Label = "Team";
FieldDefinitions.Level2.IsVisibleInGrid = true;
FieldDefinitions.Description.IsImplemented = true;
FieldDefinitions.Description.Label = "Description";
FieldDefinitions.Description.IsVisibleInGrid = true;
}
public override ModelStateDictionary Validate()
{
var msd = new ModelStateDictionary();
// add template-specific validation here
msd.Merge(base.Validate());
return msd;
}
public override List<string> Level1Options
{
get
{
return new List<string>
{
"Organisational",
"Financial",
"Operational",
"External",
"IT"
};
}
}
}
अद्यतन: वर्तमान में जांच कर रही http://msdn.microsoft.com/en-us/library/ee844259(v=vs.100).aspx (नीचे टिप्पणी करने के लिए धन्यवाद) पर टी -4 टेम्पलेट्स। उम्मीद तो दिखती है।
http://msdn.microsoft.com/en-us/library/bb126445.aspx रनटाइम पर टी 4 के साथ शुरू करने के बारे में विस्तार शामिल है। –
यह भी रुचि का हो सकता है: http://code.msdn.microsoft.com/windowsdesktop/Single-File-Generator-94d856d4 – Magrangs
क्या आप इस कॉन्फ़िगरेशन फ़ाइल की तरह दिखने का एक उदाहरण पोस्ट कर सकते हैं? –