Activator.CreateInstance - объясните, чтобы я мог понять - PullRequest
0 голосов
/ 21 апреля 2009

Итак, я смотрю на пример кода, и я не уверен, что с этим делать:

    Private Shared _instance As PollsProvider = Nothing

    Public Shared ReadOnly Property Instance() As PollsProvider
        Get
            If IsNothing(_instance) Then
                _instance = CType(Activator.CreateInstance( _
                    Type.GetType(Globals.Settings.Polls.ProviderType)), PollsProvider)
            End If
            Return _instance
        End Get
    End Property

В чем разница между вышесказанным и тем, как я обычно делаю синглтон:

    Private Shared _instance As PollsProvider = Nothing

    Public Shared ReadOnly Property Instance() As PollsProvider
        Get
            If IsNothing(_instance) Then
                _instance = New PollsProvider
            End If
            Return _instance
        End Get
    End Property

Ответы [ 2 ]

5 голосов
/ 21 апреля 2009

Первый фрагмент кода читает тип ОпросыProvider для создания из конфигурации, тогда как второй имеет тип скомпилированного ОпросыПровайдера. Таким образом, первый фрагмент позволяет переключаться в конфигурации (без перекомпиляции / повторного развертывания) между RealPollsProvider, TestPollsProvider, FiddledByOurEvilPaymastersPollsProvider и т. Д.

0 голосов
/ 21 апреля 2009

Итоулсон понял это правильно. Я добавлю, что, похоже, ОпросыProvider, вероятно, интерфейс или класс, от которого наследуются другие классы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...