اینجا انجمن عمومی نیست.
۲ سال و ۴ ماه قبل، پنجشنبه ۱ اردیبهشت ۱۴۰۱، ساعت ۲۲:۵۹
services.Decorate(descriptor.ServiceType, (target, serviceProvider) => proxyGenerator.CreateInterfaceProxyWithTargetInterface(descriptor.ServiceType, target, serviceProvider.GetService<LoggingInterceptor>()));
var descriptors = services.ToList(); var proxyGenerator = new ProxyGenerator(); foreach (var descriptor in descriptors) { var serviceInterfaceType = descriptor.ServiceType; services.Replace(ServiceDescriptor.Describe(descriptor.ServiceType, provider => proxyGenerator.CreateInterfaceProxyWithTargetInterface(descriptor.ServiceType, provider.GetInstance(descriptor), new LoggingInterceptor()), descriptor.Lifetime)); }
provider => proxyGenerator.CreateInterfaceProxyWithTargetInterface(descriptor.ServiceType, provider.GetInstance(descriptor), new LoggingInterceptor())
public static object GetInstance(this IServiceProvider provider, ServiceDescriptor descriptor) { if (descriptor.ImplementationInstance != null) { return descriptor.ImplementationInstance; } if (descriptor.ImplementationType != null) { return provider.GetServiceOrCreateInstance(descriptor.ImplementationType); } return descriptor.ImplementationFactory(provider); } private static object GetServiceOrCreateInstance(this IServiceProvider provider, Type type) { return ActivatorUtilities.GetServiceOrCreateInstance(provider, type); }