मैं डेल्फी में इस तरह से कोड करने के लिए, बस एक क्षेत्र व्याख्या सक्षम होने के लिए प्यार होता है:विशेषता-आधारित इंजेक्शन के साथ डेल्फी के लिए निर्भरता इंजेक्शन फ्रेमवर्क है?
type
TMyClass = class
private
[Inject]
Factory: ISomeFactory;
...
end;
या एक सेटर
type
TMyClass = class
private
FFactory: ISomeFactory;
[Inject]
procedure SetFactory(const AFactory: ISomeFactory);
...
public
property Factory: ISomeFactory read FFactory write SetFactory;
end;
पृष्ठभूमि का श्रेय प्रदान द्वारा: मैं पुराने कोड का स्थान बदलना कर रहा हूँ एक सेवा-उन्मुख वास्तुकला के लिए और पता लगाएं कि सेवा परत का संदर्भ हमेशा
DataModule1.ServiceLayerInstance1.SubSystemN.InvokeSomething(Params, ...);
जैसे संरचनाओं की ओर जाता है
जो
type
Form1 = class(TForm1)
private
[Inject]
SubsystemN: ISubsystemN;
...
end;
...
SubsystemN.InvokeSomething(Params, ...);
रोकें विशेषता आधारित इंजेक्शन का उपयोग कर:
Google Code पर परियोजना देखें। जहां संभव हो वहां कन्स्ट्रक्टर इंजेक्शन का प्रयोग करें। – Steven
@ स्टेवेन शायद निर्भरता पर निर्भर करता है। यदि कक्षा पूरी तरह से इसके बिना काम नहीं करेगी, तो हाँ, कन्स्ट्रक्टर अधिक उपयुक्त है। यदि यह उचित रूप से इसके बिना काम कर सकता है, तो संपत्ति इंजेक्शन इसे वैकल्पिक बनाने का एक तरीका है। – R0MANARMY
@ R0MANARMY: लेकिन फिर भी आपको संपत्ति इंजेक्शन का उपयोग करने के लिए एक विशेषता का उपयोग नहीं करना चाहिए। यह एप्लिकेशन को कंटेनर पर निर्भरता लेने के लिए मजबूर करता है, लेकिन आवेदन अनजान होना चाहिए। – Steven