public void AddService(Type type, object provider)
{
if (type == null)
throw new ArgumentNullException("type");
if (provider == null)
throw new ArgumentNullException("provider");
if (!ReflectionHelpers.IsAssignableFrom(type, provider))
throw new ArgumentException("The provider does not match the specified service type!");
services.Add(type, provider);
}