मैं इस डिजाइन प्रश्न के लिए कोई सफलता के बिना एक साफ जवाब की तलाश में हूं। मुझे ".NET Framework design guidelines" में न तो "C# programing guidelines" में सहायता नहीं मिल सका। ,प्रतिनिधियों (लैम्ब्डा अभिव्यक्ति) बनाम इंटरफेस और अमूर्त वर्ग
1)
// This what I provide
public abstract class AbstractDoSomething{
public abstract SomeThing DoSomething();
}
उपयोगकर्ता इस सार वर्ग को लागू करने की जरूरत है वे: मैं मूल रूप से एक API के रूप में एक पैटर्न का पर्दाफाश करने ताकि उपयोगकर्ताओं को परिभाषित करने और इस तरह मेरी ढांचे में अपने एल्गोरिदम को एकीकृत कर सकते है DoSomething
विधि (है कि मैं अपने ढांचे के भीतर से फोन करके उपयोग कर सकते हैं)
2)
को लागू करनामुझे पता चला कि यह भी प्रतिनिधियों का उपयोग करके प्राप्त कर सकते हैं:
public sealed class DoSomething{
public String Id;
Func<SomeThing> DoSomething;
}
इस मामले में, यदि कोई उपयोगकर्ता केवल DoSomething
वर्ग इस तरह से उपयोग कर सकते हैं:
DoSomething do = new DoSomething()
{
Id="ThisIsMyID",
DoSomething = (() => new Something())
}
प्रश्न
कौन सा इन दो विकल्पों में से एक आसान, उपयोग करने योग्य और सबसे महत्वपूर्ण समझने योग्य एपीआई के रूप में खुलासा करने के लिए सबसे अच्छा है?
संपादित
के मामले में: पंजीकरण इस तरह से किया जाता है (यह मानते हुए MyDoSomething
AbstractDoSomething
लागू होता है:
MyFramework.AddDoSomething("DoSomethingIdentifier", new MyDoSomething());
के मामले में: पंजीकरण इस तरह से किया जाता है :
MyFramework.AddDoSomething(new DoSomething());
उपयोगकर्ता आपके ढांचे के साथ सार DDSomethings कैसे पंजीकृत करता है? – dtb
@dtb कृपया मेरा संपादन देखें (कोड को थोड़ा सा संशोधित करें) – GETah