मैं वर्तमान में एक प्रोजेक्ट पर काम कर रहा हूं जहां हम अपनी पुरानी डेटासेट, संग्रहीत प्रक्रिया WinForm एप्लिकेशन को एंटीटी फ्रेमवर्क का उपयोग करने के लिए परिवर्तित कर रहे हैं, इसलिए नई वेबसाइटें उसी ऑब्जेक्ट मॉडल और रिपॉजिटरीज़ तक पहुंच सकती हैं।निनजेक्ट और एंटिटी फ्रेमवर्क का उपयोग कर WinForms में निर्भरता इंजेक्शन
वैसे भी, मैं फॉर्म में निर्भरता इंजेक्शन को लागू करने की कोशिश कर रहा हूं ताकि हम इकाई परीक्षण के लिए नकली रेपॉजिटरीज़ का उपयोग कर सकें। मैं एमवीसी वेबसाइटों में पहले इस्तेमाल किए गए साधारण कारण के लिए निनजेक्ट का उपयोग कर रहा हूं, हालांकि WinForm एप्लिकेशन में इसे लागू करने की कोशिश करना कम से कम कहने में समस्याग्रस्त साबित हो रहा है, WinForms में DI पर जानकारी की कमी से और भी बाधित मकड़जाल।
अब तक मैंने निनजेक्ट फैक्ट्री और रिपोजिटरी बनाई हैं, लेकिन मुझे भंडारों को रूपों में इंजेक्शन देने में बहुत भाग्य नहीं है।
इसलिए कोई मेरी मदद कर सकता है या कोई सुझाव दे सकता है?
नीचे मैं अपने कोड के कुछ हिस्सों कि मदद कर सकता है है:
Ninject फैक्टरी: खजाने के साथ
public class NinjectFactory : NinjectModule
{
private IKernel _ninjectKernel;
public NinjectFactory()
{
_ninjectKernel = new StandardKernel();
}
public override void Load()
{
_ninjectKernel.Bind(typeof(IRepository<>)).To(typeof(GenericRepository<>));
_ninjectKernel.Bind(typeof(IProductionRepository)).To(typeof(ProductionRepository));
}
}
प्रपत्र:
Public Class TaskForm
Inherits BaseBusinessDialogForm
Private _repository As TaskRepository
Private _task As Production.Task = Nothing
Public Sub New(ByVal task As Production.Task)
InitializeComponent()
_repository = New TaskRepository(ConnectString)
If task.TaskID = 0 Then
_task = task
Else
_task = _repository.GetByID(task.TaskID)
End If
MyBase.BusinessObject = _task
Me.TaskBindingSource.DataSource = MyBase.BusinessObject
End Sub
क्लास कि एमडीआई रूप है जो ऊपर रखती है की शुरूआत फॉर्म:
Dim kernel As IKernel = New StandardKernel(New NinjectFactory())
''Dim kernel As IKernel = New StandardKernel(New NinjectFactoryTest())
mfrmMDI = kernel.Get(Of Forms.MDI)()
Application.DoEvents()
mfrmMDI.ShowDialog()
मैं समझता हूं कि मेरा प्रश्न थोड़ा अस्पष्ट है, लेकिन मुझे यकीन नहीं है कि समस्या कहां है या मुझे क्या पूरा करने की आवश्यकता है।
धन्यवाद बहुत बहुत
आप की वीबी और सी # जुली एक संलग्न प्रकार पता चलता है, होगा सी # पर पूरी तरह उत्तर देना ठीक है? –
भाषाओं के मिश्रण के लिए खेद है, यह सीधे परियोजना कोड से है। पुरानी चीजें वीबी में हैं और सी # में नई है, कम से कम कहने के लिए परेशान! – XN16