/// <Summary> /// Only the class of the unique instance exists during the Web request. /// Lazy is used. /// </Summary> Public class Singletonperrequest { Public object Data; Public static readonly string Key = "Singletonperrequest. Key" ; Public static Singletonperrequest Current {Get { Singletonperrequest Instance = ( Singletonperrequest ) Httpcontext . Current. items [Key]; If (Instance = Null ) {Instance = New Singletonperrequest (); Httpcontext . Current. items [Key] = instance ;} Return Instance ;}}}/// <Summary> /// Only a unique instance class exists in an execution thread. /// Lazy is used. /// </Summary> Public class Singletonperthread { Public object Data; Public static readonly string Key = "Singletonperthread. Key" ; Public static Singletonperthread Current { Get { Singletonperthread Instance = ( Singletonperthread ) Callcontext . Getdata (key ); If (Instance = Null ) {Instance = New Singletonperthread (); Callcontext . Setdata (Key, instance );} Return Instance ;}}}
This is just an example. You can change it to a generic class to write a saferCode.
In addition, callcontext can be transplanted in Web/win, so the second scheme is also recommended in web.