2009-04-21 2 views
0

Так что я смотрю на какой-то пример кода, и я не уверен, что сделать это:Activator.CreateInstance - Объясните это, так что я могу понять

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 

ответ

5

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

0

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

Смежные вопросы