diff --git a/src/Umbraco.Core/Resolving/ResolverBase.cs b/src/Umbraco.Core/Resolving/ResolverBase.cs index d7a62860a8..2d27ac1f21 100644 --- a/src/Umbraco.Core/Resolving/ResolverBase.cs +++ b/src/Umbraco.Core/Resolving/ResolverBase.cs @@ -3,36 +3,13 @@ using System.Threading; namespace Umbraco.Core.Resolving { - internal abstract class ResolverBase where TResolver : class + /// + /// base class for resolvers which declare a singleton accessor + /// + /// + internal abstract class ResolverBase + where TResolver : class { - static TResolver _resolver; - - //TODO: This is not correct, this will be the same lock for all ResolverBase classes!! - static readonly ReaderWriterLockSlim ResolversLock = new ReaderWriterLockSlim(); - - public static TResolver Current - { - get - { - using (new ReadLock(ResolversLock)) - { - if (_resolver == null) - throw new InvalidOperationException("Current has not been initialized. You must initialize Current before trying to read it."); - return _resolver; - } - } - - set - { - using (new WriteLock(ResolversLock)) - { - if (value == null) - throw new ArgumentNullException("value"); - if (_resolver != null) - throw new InvalidOperationException("Current has already been initialized. It is not possible to re-initialize Current once it has been initialized."); - _resolver = value; - } - } - } + public static TResolver Current { get; set; } } } diff --git a/src/Umbraco.Core/Resolving/SingleResolverBase.cs b/src/Umbraco.Core/Resolving/SingleResolverBase.cs index 95cab6cf64..b57fc681d8 100644 --- a/src/Umbraco.Core/Resolving/SingleResolverBase.cs +++ b/src/Umbraco.Core/Resolving/SingleResolverBase.cs @@ -3,7 +3,8 @@ namespace Umbraco.Core.Resolving { internal abstract class SingleResolverBase : ResolverBase - where TResolver : class + where TResolver : class + where TResolved : class { TResolved _resolved; readonly bool _canBeNull;