/// <summary>
        /// Initializes a new instance of the <see cref="ServiceLocatorRegistrationAttribute"/> class.
        /// </summary>
        /// <param name="interfaceType">Type of the interface.</param>
        /// <param name="registrationMode">The registration mode.</param>
        /// <param name="tag">The tag.</param>
        /// <exception cref="System.ArgumentNullException">The <paramref name="interfaceType" /> is <c>null</c>.</exception>
        public ServiceLocatorRegistrationAttribute(Type interfaceType, ServiceLocatorRegistrationMode registrationMode = ServiceLocatorRegistrationMode.SingletonInstantiateWhenRequired, object tag = null)
        {
            Argument.IsNotNull("InterfaceType", interfaceType);

            InterfaceType = interfaceType;
            RegistrationMode = registrationMode;
            Tag = tag;

            RegistrationType = (registrationMode == ServiceLocatorRegistrationMode.Transient) ? RegistrationType.Transient : RegistrationType.Singleton;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ServiceLocatorRegistrationAttribute"/> class.
        /// </summary>
        /// <param name="interfaceType">Type of the interface.</param>
        /// <param name="registrationMode">The registration mode.</param>
        /// <param name="tag">The tag.</param>
        /// <exception cref="System.ArgumentNullException">The <paramref name="interfaceType" /> is <c>null</c>.</exception>
        public ServiceLocatorRegistrationAttribute(Type interfaceType, ServiceLocatorRegistrationMode registrationMode = ServiceLocatorRegistrationMode.SingletonInstantiateWhenRequired, object tag = null)
        {
            Argument.IsNotNull("InterfaceType", interfaceType);

            InterfaceType    = interfaceType;
            RegistrationMode = registrationMode;
            Tag = tag;

            RegistrationType = (registrationMode == ServiceLocatorRegistrationMode.Transient) ? RegistrationType.Transient : RegistrationType.Singleton;
        }