Внедрение зависимостей в WinForms с использованием Ninject и Entity Framework
В настоящее время я работаю над проектом, в котором мы конвертируем наше старое приложение WinForm для хранимых процедур DataSet, чтобы использовать Entity Framework, чтобы новые веб-сайты могли получать доступ к той же объектной модели и репозиториям.
В любом случае, я пытаюсь внедрить Dependency Injection в Forms, чтобы мы могли использовать поддельные репозитории для модульного тестирования. Я использую Ninject по той простой причине, по которой я использовал его ранее на веб-сайтах MVC, однако попытка реализовать это в приложении WinForm оказывается, по меньшей мере, проблематичной, еще больше затрудненной отсутствием информации о DI в WinForms на паутина.
До сих пор я создал Ninject Factory и репозитории, но у меня нетМне очень повезло, что хранилища появились в формах.
Поэтому кто-нибудь может мне помочь или внести какие-либо предложения?
Ниже у меня есть части моего кода, которые могут помочь:
Ninject Factory:
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
Класс, который запускает форму MDI, которая содержит вышеуказанную форму:
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()
Я понимаю, что мой вопрос немного расплывчат, но яЯ не уверен, где проблема или что мне нужно для завершения.
Спасибо большое