VB.Net Где получить инъекцию зависимостей в ViewModel? - PullRequest
0 голосов
/ 11 апреля 2011

Я программист на VB, и я думаю, что отсюда моя проблема.Обычно я могу понять это, но эй.

У меня есть модель представления и я хочу получить доступ к своему контейнеру единства - я использую Prism и silverlight.Поэтому я пытаюсь:

dim container as IUnityContainer
Private Sub New(container as IUnityContainer)
    Me.Container = container
end sub

Однако, когда я пытаюсь создать экземпляр моей модели представления из своего представления, я получаю сообщение об ошибке, что все параметры не были предоставлены для новой подпрограммы.Так как мне получить доступ к контейнеру?Я уверен, что я просто дингбат, но все примеры на C # помещают его в сабвуфер с тем же именем, что и класс ...

SOLUTION!

Модель представления должна бытьинициализируется чем-то, что уже использует внедрение зависимостей.Поскольку я использую единицу, это означает, что нам нужно получить экземпляр используемого контейнера.Так как все запускается загрузчиком в какой-то момент вдоль линии, вам нужно проследить это вдоль.

В моем случае я использовал подход, основанный на представлении, поэтому (и я ненавижу это делать, но в настоящее время я неуверен, что лучше) Я разрешаю модель представления через контейнер, который был передан в представление ... Звучит странно, но вот весь код для представления:

Imports Microsoft.Practices.Unity

    Partial Public Class CustomerList
        Inherits UserControl

        ' This grabs the container when the class is created
        Pblic Sub New(container As IUnityContainer)

            InitializeComponent()
            'Important -> This resolves the class and adds it to the container
            Me.DataContext = container.Resolve(Of CustomerListViewModel)()
        End Sub

    End Class

Теперь, когда я перепрыгиваю на своюviewmodel, я могу получить доступ к правильному контейнеру!

Если вам нужны пояснения, дайте мне знать

...