public object CreateProxy([NotNull] Type serviceType) { if (serviceType == null) { throw new ArgumentNullException(nameof(serviceType)); } var proxyType = _proxyTypeFactory.CreateProxyType(serviceType); var proxy = _serviceProvider.CreateInstance(proxyType); if (serviceType.IsClass) { ProxyUtils.SetProxyTarget(proxy, _serviceProvider.CreateInstance(serviceType)); } return(proxy); }
public object CreateProxyWithTarget(Type serviceType, object implement) { if (null == serviceType) { throw new ArgumentNullException(nameof(serviceType)); } if (implement == null) { throw new ArgumentNullException(nameof(implement)); } var implementType = implement.GetType(); var proxyType = _proxyTypeFactory.CreateProxyType(serviceType, implementType); var proxy = _serviceProvider.CreateInstance(proxyType); ProxyUtils.SetProxyTarget(proxy, implement); return(proxy); }
public object CreateProxy([NotNull] Type serviceType, [NotNull] Type implementType) { if (serviceType == null) { throw new ArgumentNullException(nameof(serviceType)); } if (implementType == null) { throw new ArgumentNullException(nameof(implementType)); } var proxyType = _proxyTypeFactory.CreateProxyType(serviceType, implementType); var proxy = _serviceProvider.CreateInstance(proxyType); var target = _serviceProvider.CreateInstance(implementType); ProxyUtils.SetProxyTarget(proxy, target); return(proxy); }
public object CreateProxy(Type serviceType, Type implementType, params object?[] arguments) { if (serviceType == null) { throw new ArgumentNullException(nameof(serviceType)); } if (implementType == null) { throw new ArgumentNullException(nameof(implementType)); } var proxyType = _proxyTypeFactory.CreateProxyType(serviceType, implementType); if (serviceType.IsInterface) { var implement = _serviceProvider.CreateInstance(implementType, arguments); var proxy = _serviceProvider.CreateInstance(proxyType); ProxyUtils.SetProxyTarget(proxy, implement); return(proxy); } return(_serviceProvider.CreateInstance(proxyType, arguments)); }