//SINGLETON - C# using NUnit.Framework; [TestFixture()] public class SingletonTest { [Test()] public void ObjectsAreTheSameTest() { DeploymentInfo firstDeployment = Singleton<DeploymentInfo>.UniqueInstance; DeploymentInfo secondDeployment = Singleton<DeploymentInfo>.UniqueInstance; Assert.AreSame(firstDeployment, secondDeployment); } } //Singleton Pattern //Generic Version public class Singleton<T> where T : class, new() { private Singleton() { } private class SingletonCreator { static SingletonCreator() { } // Private object instantiated with private constructor static internal readonly T instance = new T(); } public static T UniqueInstance { get { return SingletonCreator.instance; } } }
'SINGLETON - VB.NET Imports NUnit.Framework <TestFixture()> _ Public Class SingletonTest <Test()> _ Public Sub ObjectsAreTheSameTest() Dim firstDeployment As DeploymentInfo = Singleton(Of DeploymentInfo).UniqueInstance Dim secondDeployment As DeploymentInfo = Singleton(Of DeploymentInfo).UniqueInstance Assert.AreSame(firstDeployment, secondDeployment) End Sub End Class 'Singleton Pattern 'Generic Version Public Class Singleton(Of T As {Class, New}) Private Sub New() End Sub Private Class SingletonCreator Shared Sub New() End Sub ' Private object instantiated with private constructor Friend Shared ReadOnly instance As New T() End Class Public Shared ReadOnly Property UniqueInstance() As T Get Return SingletonCreator.instance End Get End Property End Class
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.