Activator.CreateInstance - 解释它以便我能理解

时间:2009-04-21 09:54:22

标签: vb.net design-patterns singleton

所以我正在查看一些示例代码,我不知道该怎么做:

    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 个答案:

答案 0 :(得分:5)

第一个代码片段读取要从config创建的PollsProvider类型,而第二个代码片段具有编译的PollsProvider类型。因此,第一个片段允许您在RealPollsProvider,TestPollsProvider之间切换配置(无需重新编译/重新部署), FiddledByOurEvilPaymastersPollsProvider等。

答案 1 :(得分:0)

itowlson做对了。我将添加它看起来像PollsProvider可能是一个接口或其他类继承的类。