/// <summary> /// Register Proxy /// </summary> /// <param name="services"></param> /// <param name="bag"></param> /// <returns></returns> /// <exception cref="ArgumentNullException"></exception> public static IServiceContext RegisterProxyFrom(this IServiceContext services, DependencyProxyRegister bag) { services.CheckNull(nameof(services)); if (bag != null) { var descriptors = bag.ExportDescriptors(); foreach (var descriptor in descriptors) { switch (descriptor.ProxyType) { case DependencyProxyType.TypeToType: TypeToTypeRegister(services, descriptor); break; case DependencyProxyType.TypeToInstance: TypeToInstanceRegister(services, descriptor); break; case DependencyProxyType.TypeToInstanceFunc: TypeToInstanceFuncRegister(services, descriptor); break; case DependencyProxyType.TypeSelf: TypeSelfRegister(services, descriptor); break; case DependencyProxyType.InstanceSelf: InstanceSelfRegister(services, descriptor); break; case DependencyProxyType.InstanceSelfFunc: InstanceSelfFuncRegister(services, descriptor); break; case DependencyProxyType.TypeToResolvedInstanceFunc: TypeToResolvedInstanceFuncRegister(services, descriptor); break; case DependencyProxyType.ResolvedInstanceSelfFunc: ResolvedInstanceSelfFuncRegister(services, descriptor); break; } } } return(services); }