पर लटका हुआ है मैं काम पर एक साधारण उपकरण के लिए अपना पहला डीएसएल लिखने में एक क्रैक ले रहा हूं। मैं जटिल पैरेंट ऑब्जेक्ट को सेट करने के लिए बिल्डर पैटर्न का उपयोग कर रहा हूं लेकिन पैरेंट ऑब्जेक्ट के बच्चे के संग्रह को बनाने के लिए ईंट की दीवारों में दौड़ रहा हूं।सी # में अपना पहला डीएसएल लिखना और func <T> और एक्शन
उपयोग::
var myMorningCoffee = Coffee.Make.WithCream().WithOuncesToServe(16);
बंद के साथ नमूना (मुझे लगता है कि वे क्या कहा जाता है कर रहे हैं): इस के रूप में
var myMorningCoffee = Coffee.Make.WithCream().PourIn(
x => {
x.ShotOfExpresso.AtTemperature(100);
x.ShotOfExpresso.AtTemperature(100).OfPremiumType();
}
).WithOuncesToServe(16);
नमूना वर्ग (बच्चे के बिना PourIn() विधि यहां एक नमूना है जो मैं समझने की कोशिश कर रहा हूं।)
public class Coffee
{
private bool _cream;
public Coffee Make { get new Coffee(); }
public Coffee WithCream()
{
_cream = true;
return this;
}
public Coffee WithOuncesToServe(int ounces)
{
_ounces = ounces;
return this;
}
}
तो मेरे काम के लिए मेरे पास जटिल वस्तु निर्माण है ठीक है, लेकिन मैं अपने जीवन के लिए यह नहीं समझ सकता कि लैम्बडा को मूल वस्तु पर उप संग्रह के लिए कोड किया गया है। (इस उदाहरण में यह एक्सप्रेसो के शॉट्स (बाल संग्रह) है)।
शायद मैं यहां अवधारणाओं को भ्रमित कर रहा हूं और मुझे सीधे सेट करने की कोई बात नहीं है; हालांकि, मुझे वास्तव में यह पसंद है कि यह कैसे पढ़ता है और यह समझना चाहता है कि यह काम कैसे प्राप्त करें।
धन्यवाद, सैम
मुझे ईमानदार होना है; यह वास्तव में एक डीएसएल, आईएमएचओ का एक भयानक उपयोग है। यह मेरे लिए बहुत मुश्किल से पढ़ता है। लेकिन प्रत्येक के लिए, मुझे लगता है। –
तो आपकी समस्या क्या है? यह सब कोड मालिकाना दिखता है, इसलिए हमारे पास इसका कोई मतलब नहीं है कि इसका कोई मतलब क्या है। उदाहरण के लिए, IncludeApps का पैरामीटर प्रकार क्या है? – tster
क्या आप IncludeApps विधि के लिए हस्ताक्षर पोस्ट कर सकते हैं? –