From a3a86faa40ea923a4e4936f5ad457620a89bf5e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 2 May 2017 21:02:26 +0300 Subject: [PATCH] Refactored. Added IAbpInterceptor. --- .../AbpAutofacServiceCollectionExtensions.cs} | 18 ++++++----------- ...AbpApplicationCreationOptionsExtensions.cs | 16 +++++++++++++++ .../AbpAutofacServiceProviderFactory.cs | 2 +- .../Volo/Abp/DynamicProxy/IAbpInterceptor.cs | 7 +++++++ .../Abp/DynamicProxy/IAbpMethodInvocation.cs | 20 +++++++++++++++++++ 5 files changed, 50 insertions(+), 13 deletions(-) rename src/Volo.Abp.Autofac/{Volo/Abp/AbpAutofacExtensions.cs => Microsoft/Extensions/DependencyInjection/AbpAutofacServiceCollectionExtensions.cs} (68%) create mode 100644 src/Volo.Abp.Autofac/Volo/Abp/AbpAutofacAbpApplicationCreationOptionsExtensions.cs rename src/Volo.Abp.Autofac/Volo/Abp/{ => Autofac}/AbpAutofacServiceProviderFactory.cs (98%) create mode 100644 src/Volo.Abp/Volo/Abp/DynamicProxy/IAbpInterceptor.cs create mode 100644 src/Volo.Abp/Volo/Abp/DynamicProxy/IAbpMethodInvocation.cs diff --git a/src/Volo.Abp.Autofac/Volo/Abp/AbpAutofacExtensions.cs b/src/Volo.Abp.Autofac/Microsoft/Extensions/DependencyInjection/AbpAutofacServiceCollectionExtensions.cs similarity index 68% rename from src/Volo.Abp.Autofac/Volo/Abp/AbpAutofacExtensions.cs rename to src/Volo.Abp.Autofac/Microsoft/Extensions/DependencyInjection/AbpAutofacServiceCollectionExtensions.cs index 1c275eed64..61e8718653 100644 --- a/src/Volo.Abp.Autofac/Volo/Abp/AbpAutofacExtensions.cs +++ b/src/Volo.Abp.Autofac/Microsoft/Extensions/DependencyInjection/AbpAutofacServiceCollectionExtensions.cs @@ -1,19 +1,13 @@ using System; using Autofac; using JetBrains.Annotations; -using Microsoft.Extensions.DependencyInjection; +using Volo; +using Volo.Abp; -namespace Volo.Abp +namespace Microsoft.Extensions.DependencyInjection { - public static class AbpAutofacExtensions + public static class AbpAutofacServiceCollectionExtensions { - public static void UseAutofac(this AbpApplicationCreationOptions options) - { - var builder = new ContainerBuilder(); - options.Services.AddObjectAccessor(builder); - options.Services.AddSingleton((IServiceProviderFactory) new AbpAutofacServiceProviderFactory(builder)); - } - [NotNull] public static ContainerBuilder GetContainerBuilder([NotNull] this IServiceCollection services) { @@ -22,7 +16,7 @@ namespace Volo.Abp var builder = services.GetObjectOrNull(); if (builder == null) { - throw new AbpException($"Could not find ContainerBuilder. Be sure that you have called {nameof(UseAutofac)} method before!"); + throw new AbpException($"Could not find ContainerBuilder. Be sure that you have called {nameof(AbpAutofacAbpApplicationCreationOptionsExtensions.UseAutofac)} method before!"); } return builder; @@ -35,7 +29,7 @@ namespace Volo.Abp var serviceProviderFactory = services.GetSingletonInstanceOrNull>(); if (serviceProviderFactory == null) { - throw new AbpException($"Could not find {typeof(IServiceProviderFactory).FullName} in {services}. Use {nameof(UseAutofac)} before!"); + throw new AbpException($"Could not find {typeof(IServiceProviderFactory).FullName} in {services}. Use {nameof(AbpAutofacAbpApplicationCreationOptionsExtensions.UseAutofac)} before!"); } var builder = serviceProviderFactory.CreateBuilder(services); diff --git a/src/Volo.Abp.Autofac/Volo/Abp/AbpAutofacAbpApplicationCreationOptionsExtensions.cs b/src/Volo.Abp.Autofac/Volo/Abp/AbpAutofacAbpApplicationCreationOptionsExtensions.cs new file mode 100644 index 0000000000..f632c11495 --- /dev/null +++ b/src/Volo.Abp.Autofac/Volo/Abp/AbpAutofacAbpApplicationCreationOptionsExtensions.cs @@ -0,0 +1,16 @@ +using Autofac; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Autofac; + +namespace Volo.Abp +{ + public static class AbpAutofacAbpApplicationCreationOptionsExtensions + { + public static void UseAutofac(this AbpApplicationCreationOptions options) + { + var builder = new ContainerBuilder(); + options.Services.AddObjectAccessor(builder); + options.Services.AddSingleton((IServiceProviderFactory) new AbpAutofacServiceProviderFactory(builder)); + } + } +} diff --git a/src/Volo.Abp.Autofac/Volo/Abp/AbpAutofacServiceProviderFactory.cs b/src/Volo.Abp.Autofac/Volo/Abp/Autofac/AbpAutofacServiceProviderFactory.cs similarity index 98% rename from src/Volo.Abp.Autofac/Volo/Abp/AbpAutofacServiceProviderFactory.cs rename to src/Volo.Abp.Autofac/Volo/Abp/Autofac/AbpAutofacServiceProviderFactory.cs index 1e639d0c61..3165c690ff 100644 --- a/src/Volo.Abp.Autofac/Volo/Abp/AbpAutofacServiceProviderFactory.cs +++ b/src/Volo.Abp.Autofac/Volo/Abp/Autofac/AbpAutofacServiceProviderFactory.cs @@ -3,7 +3,7 @@ using Autofac; using Autofac.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection; -namespace Volo.Abp +namespace Volo.Abp.Autofac { /// /// A factory for creating a and an . diff --git a/src/Volo.Abp/Volo/Abp/DynamicProxy/IAbpInterceptor.cs b/src/Volo.Abp/Volo/Abp/DynamicProxy/IAbpInterceptor.cs new file mode 100644 index 0000000000..d8f2728fed --- /dev/null +++ b/src/Volo.Abp/Volo/Abp/DynamicProxy/IAbpInterceptor.cs @@ -0,0 +1,7 @@ +namespace Volo.Abp.DynamicProxy +{ + public interface IAbpInterceptor + { + void Intercept(IAbpMethodInvocation invocation); + } +} diff --git a/src/Volo.Abp/Volo/Abp/DynamicProxy/IAbpMethodInvocation.cs b/src/Volo.Abp/Volo/Abp/DynamicProxy/IAbpMethodInvocation.cs new file mode 100644 index 0000000000..4ea6c67f5a --- /dev/null +++ b/src/Volo.Abp/Volo/Abp/DynamicProxy/IAbpMethodInvocation.cs @@ -0,0 +1,20 @@ +using System; +using System.Reflection; + +namespace Volo.Abp.DynamicProxy +{ + public interface IAbpMethodInvocation + { + object[] Arguments { get; } + + Type[] GenericArguments { get; } + + object InvocationTarget { get; } + + MethodInfo MethodInvocationTarget { get; } + + object ReturnValue { get; set; } + + void Proceed(); + } +} \ No newline at end of file