better way of handling types

This commit is contained in:
Gered 2013-08-24 14:22:30 -04:00
parent cbec3ddd90
commit e141ddae9b

View file

@ -16,13 +16,11 @@ namespace Blarg.GameFramework
Framework.Logger.Debug(LOG_TAG, "Ready for use.");
}
public void Register(object service)
public void Register<T>(T service) where T : class
{
if (service == null)
throw new ArgumentNullException("service");
var type = service.GetType();
if (type.IsValueType)
throw new ArgumentException("ServiceContainer cannot be used with value types.", "service");
var type = typeof(T);
if (_services.ContainsKey(type))
throw new InvalidOperationException("Service object of this type has already been registered.");
@ -33,19 +31,13 @@ namespace Blarg.GameFramework
Framework.Logger.Debug(LOG_TAG, "Registered object of type {0}.", type);
}
public void Unregister(object service)
public void Unregister<T>() where T : class
{
if (service == null)
throw new ArgumentNullException("service");
var type = service.GetType();
if (type.IsValueType)
throw new ArgumentException("ServiceContainer cannot be used with value types.", "service");
var type = typeof(T);
var registeredService = _services.Get(type);
if (registeredService == null)
return;
if (registeredService != service)
throw new InvalidOperationException("This is not the service object that was registered under this type.");
_services.Remove(type);
Framework.Logger.Debug(LOG_TAG, "Unregistered object of type {0}.", type);