Files
Umbraco-CMS/src/Umbraco.Core/ObjectResolution/SingleObjectResolverBase.cs

61 lines
1.3 KiB
C#
Raw Normal View History

2012-07-26 07:52:13 -02:00
using System;
namespace Umbraco.Core.ObjectResolution
2012-07-26 07:52:13 -02:00
{
2012-07-27 05:52:01 +06:00
/// <summary>
/// A Resolver to return and set a Single registered object.
/// </summary>
/// <typeparam name="TResolved"></typeparam>
/// <typeparam name="TResolver"> </typeparam>
2012-07-27 05:52:01 +06:00
/// <remarks>
/// Used for 'singly' registered objects. An example is like the MVC Controller Factory, only one exists application wide and it can
/// be get/set.
/// </remarks>
internal abstract class SingleObjectResolverBase<TResolver, TResolved> : ResolverBase<TResolver>
where TResolved : class
where TResolver : class
2012-07-26 07:52:13 -02:00
{
TResolved _resolved;
readonly bool _canBeNull;
2012-07-26 07:52:13 -02:00
protected SingleObjectResolverBase()
2012-07-26 07:52:13 -02:00
: this(false)
{ }
protected SingleObjectResolverBase(TResolved value)
2012-07-26 07:52:13 -02:00
: this(false)
{
_resolved = value;
}
protected SingleObjectResolverBase(bool canBeNull)
2012-07-26 07:52:13 -02:00
{
_canBeNull = canBeNull;
}
protected SingleObjectResolverBase(TResolved value, bool canBeNull)
2012-07-26 07:52:13 -02:00
{
_resolved = value;
_canBeNull = canBeNull;
}
2012-07-27 05:52:01 +06:00
/// <summary>
/// Gets/sets the value of the object
/// </summary>
2012-07-26 07:52:13 -02:00
protected TResolved Value
{
get
{
return _resolved;
}
set
{
if (!_canBeNull && value == null)
throw new ArgumentNullException("value");
_resolved = value;
}
}
}
}