Ejemplo n.º 1
0
        protected ServiceInstanceRegistration(Type interfaceType, object instance)
        {
            InterfaceType = interfaceType ?? throw new ArgumentNullException(nameof(interfaceType));
            Instance      = instance ?? throw new ArgumentNullException(nameof(instance));

            if (!InterfaceType.IsAssignableFrom(Instance.GetType()))
            {
                throw new ArgumentException("InterfaceType and type of instance does not matching");
            }
        }
        /// <summary>
        /// Sets <see cref="InterfaceImplementationType"/>.
        /// </summary>
        /// <param name="interfaceImplementationType">The type to resolve to in place of <see cref="InterfaceType"/>. Must implement <see cref="InterfaceType"/>.</param>
        public void SetInterfaceImplementationType(Type interfaceImplementationType)
        {
            if (interfaceImplementationType is null)
            {
                throw new ArgumentNullException(nameof(interfaceImplementationType));
            }

            if (!InterfaceType.IsAssignableFrom(interfaceImplementationType))
            {
                throw new ArgumentException($"Type '{interfaceImplementationType}' does not implement interface '{InterfaceType}'.", nameof(interfaceImplementationType));
            }

            if (!interfaceImplementationType.IsClass || interfaceImplementationType.IsAbstract)
            {
                throw new ArgumentException($"Type '{interfaceImplementationType}' must be a non-abstract, non-static class.", nameof(interfaceImplementationType));
            }

            InterfaceImplementationType = interfaceImplementationType;
        }
Ejemplo n.º 3
0
 public bool Matches(Type type)
 {
     return(InterfaceType.IsAssignableFrom(type));
 }