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; }
public bool Matches(Type type) { return(InterfaceType.IsAssignableFrom(type)); }