Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
4b87f8d
fix typo
huoshan12345 Jul 18, 2025
3623e9c
add test cases
huoshan12345 Jul 18, 2025
4d508bd
add NewSlot attribute
huoshan12345 Jul 18, 2025
ee52db7
support interface proxy
huoshan12345 Jul 20, 2025
4e3c5c1
fix comments
huoshan12345 Jul 20, 2025
75bf605
fix method attribute
huoshan12345 Jul 20, 2025
bd11d18
fix test cases
huoshan12345 Jul 20, 2025
4401de7
remove unused code
huoshan12345 Jul 20, 2025
a92c665
fix comment
huoshan12345 Jul 20, 2025
19354eb
merge files
huoshan12345 Jul 20, 2025
28b9a4e
cleanup
huoshan12345 Jul 20, 2025
4e9b707
add some test cases
huoshan12345 Jul 20, 2025
a83d93f
fix some cases
huoshan12345 Jul 21, 2025
ca54e21
fix comment
huoshan12345 Jul 21, 2025
5ee9105
revert some code
huoshan12345 Jul 21, 2025
e640c15
fix some cases
huoshan12345 Jul 21, 2025
2caca2f
cleanup
huoshan12345 Jul 21, 2025
5d607cb
fix a test case
huoshan12345 Jul 22, 2025
38311af
refine code
huoshan12345 Jul 22, 2025
2d5a650
Merge branch 'master' of https://github.com/dotnetcore/AspectCore-Fra…
huoshan12345 Sep 22, 2025
6730c2e
add some test cases
huoshan12345 Oct 4, 2025
929bf0a
Merge branch 'master' of https://github.com/dotnetcore/AspectCore-Fra…
huoshan12345 May 13, 2026
a3b084f
re support Covariant return types after the maintainer's refactory
huoshan12345 May 13, 2026
987a06c
refine code
huoshan12345 May 13, 2026
c8f3035
sign the project AspectCore.Tests.csproj to test internal methods
huoshan12345 May 13, 2026
1af526a
add test cases for multi level
huoshan12345 Jul 6, 2026
6a8c6e2
add test cases
huoshan12345 Jul 6, 2026
d623d5a
refine code
huoshan12345 Jul 6, 2026
3dc0b08
refine code
huoshan12345 Jul 6, 2026
52180df
clean up
huoshan12345 Jul 7, 2026
1fac7b2
add test cases
huoshan12345 Jul 7, 2026
e725632
cleanup
huoshan12345 Jul 7, 2026
862a8c5
fix generic
huoshan12345 Jul 7, 2026
cb9a598
add test cases
huoshan12345 Jul 7, 2026
82e10b7
add test cases
huoshan12345 Jul 7, 2026
c6bb586
move file
huoshan12345 Jul 7, 2026
5fc9a36
refine types
huoshan12345 Jul 7, 2026
2a2275a
refine tests
huoshan12345 Jul 7, 2026
e7306fe
fix TypeExtensions
huoshan12345 Jul 7, 2026
30a96a0
fix TypeExtensions
huoshan12345 Jul 7, 2026
34343d9
fix TypeExtensions
huoshan12345 Jul 7, 2026
f16aaf3
fix test cases
huoshan12345 Jul 7, 2026
5d95656
fix TypeExtensions
huoshan12345 Jul 8, 2026
e86e62e
add test case
huoshan12345 Jul 8, 2026
eed0506
refine
huoshan12345 Jul 8, 2026
5bb3323
fix TypeExtensions
huoshan12345 Jul 8, 2026
23e2f4a
fix ClassProxyAstBuilder.cs
huoshan12345 Jul 8, 2026
0f2691a
fix test cases
huoshan12345 Jul 8, 2026
eee02a8
refine code
huoshan12345 Jul 8, 2026
c81a3e6
fix test cases
huoshan12345 Jul 8, 2026
30b5db8
refine files
huoshan12345 Jul 8, 2026
119bfd1
add test cases
huoshan12345 Jul 8, 2026
1c7b4df
refine test cases
huoshan12345 Jul 8, 2026
b4b6402
fix test cases
huoshan12345 Jul 8, 2026
899bbfc
add slnx
huoshan12345 Jul 8, 2026
ee0c91d
add test cases
huoshan12345 Jul 8, 2026
51945e0
fix: ServiceInterceptor AllowMultiple not respected due to .Distinct()
liuhaoyang Jul 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions AspectCore-Framework.slnx
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<Solution>
<Folder Name="/benchmark/">
<Project Path="benchmark/AspectCore.Core.Benchmark/AspectCore.Core.Benchmark.csproj" />
<Project Path="benchmark/AspectCore.Extensions.Reflection.Benchmark/AspectCore.Extensions.Reflection.Benchmark.csproj" />
</Folder>
<Folder Name="/items/">
<File Path=".gitattributes" />
<File Path=".gitignore" />
<File Path="build.cake" />
<File Path="build.ps1" />
<File Path="LICENSE" />
<File Path="NuGet.config" />
<File Path="README.md" />
</Folder>
<Folder Name="/items/build/">
<File Path="build/aspectcore.snk" />
<File Path="build/common.props" />
<File Path="build/index.cake" />
<File Path="build/sign.props" />
<File Path="build/util.cake" />
<File Path="build/version.cake" />
<File Path="build/version.props" />
</Folder>
<Folder Name="/sample/">
<Project Path="sample/AspectCore.Extensions.Autofac.Sample/AspectCore.Extensions.Autofac.Sample.csproj" />
<Project Path="sample/AspectCore.Extensions.DependencyInjection.ConsoleSample/AspectCore.Extensions.DependencyInjection.ConsoleSample.csproj" />
</Folder>
<Folder Name="/src/" />
<Folder Name="/src/core/">
<Project Path="src/AspectCore.Abstractions/AspectCore.Abstractions.csproj" />
<Project Path="src/AspectCore.Core/AspectCore.Core.csproj" />
</Folder>
<Folder Name="/src/extensions/">
<Project Path="src/AspectCore.Extensions.AspectScope/AspectCore.Extensions.AspectScope.csproj" />
<Project Path="src/AspectCore.Extensions.AspNetCore/AspectCore.Extensions.AspNetCore.csproj" />
<Project Path="src/AspectCore.Extensions.Configuration/AspectCore.Extensions.Configuration.csproj" />
<Project Path="src/AspectCore.Extensions.DataAnnotations/AspectCore.Extensions.DataAnnotations.csproj" />
<Project Path="src/AspectCore.Extensions.DataValidation/AspectCore.Extensions.DataValidation.csproj" />
<Project Path="src/AspectCore.Extensions.Hosting/AspectCore.Extensions.Hosting.csproj" />
<Project Path="src/AspectCore.Extensions.Reflection/AspectCore.Extensions.Reflection.csproj" />
</Folder>
<Folder Name="/src/extras/">
<Project Path="src/AspectCore.Extensions.Autofac/AspectCore.Extensions.Autofac.csproj" />
<Project Path="src/AspectCore.Extensions.DependencyInjection/AspectCore.Extensions.DependencyInjection.csproj" />
<Project Path="src/AspectCore.Extensions.LightInject/AspectCore.Extensions.LightInject.csproj" />
<Project Path="src/AspectCore.Extensions.Windsor/AspectCore.Extensions.Windsor.csproj" />
</Folder>
<Folder Name="/test/">
<Project Path="tests/AspectCore.Extensions.Autofac.Test/AspectCore.Extensions.Autofac.Test.csproj" />
<Project Path="tests/AspectCore.Extensions.Configuration.Tests/AspectCore.Extensions.Configuration.Tests.csproj" />
<Project Path="tests/AspectCore.Extensions.DependencyInjection.Test/AspectCore.Extensions.DependencyInjection.Test.csproj" />
<Project Path="tests/AspectCore.Extensions.Hosting.Tests/AspectCore.Extensions.Hosting.Tests.csproj" />
<Project Path="tests/AspectCore.Extensions.LightInject.Test/AspectCore.Extensions.LightInject.Test.csproj" />
<Project Path="tests/AspectCore.Extensions.Reflection.Test/AspectCore.Extensions.Reflection.Test.csproj" />
<Project Path="tests/AspectCore.Extensions.Windsor.Test/AspectCore.Extensions.Windsor.Test.csproj" />
<Project Path="tests/AspectCore.Tests/AspectCore.Tests.csproj" />
</Folder>
</Solution>
2 changes: 2 additions & 0 deletions build/common.props
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,7 @@
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<GeneratePackageOnBuild>False</GeneratePackageOnBuild>
<PackageRequireLicenseAcceptance>False</PackageRequireLicenseAcceptance>
<!-- 10.0 is the latest stable version of C# that is supported by the net6.0, which is the lowest target framework for this project -->
<LangVersion>10.0</LangVersion>
</PropertyGroup>
</Project>
1 change: 1 addition & 0 deletions src/AspectCore.Core/AspectCore.Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
<Import Project="..\..\build\common.props" />
<PropertyGroup>
<Description>The implementation of the AspectCore framework.</Description>
<RootNamespace>AspectCore</RootNamespace>
<AssemblyTitle>AspectCore.Core</AssemblyTitle>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<AssemblyName>AspectCore.Core</AssemblyName>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;

namespace AspectCore.DependencyInjection
{
internal class EnumerableServiceDefinition : ServiceDefinition
{
public IEnumerable<ServiceDefinition> ServiceDefinitions { get; }

public Type ElementType { get; }

public EnumerableServiceDefinition(Type serviceType, Type elementType, IEnumerable<ServiceDefinition> serviceDefinitions) : base(serviceType, Lifetime.Transient)
{
ElementType = elementType;
ServiceDefinitions = serviceDefinitions;
}
}

internal class ManyEnumerableServiceDefinition : EnumerableServiceDefinition
{
public ManyEnumerableServiceDefinition(Type serviceType, Type elementType, IEnumerable<ServiceDefinition> serviceDefinitions) : base(serviceType, elementType, serviceDefinitions)
{
}
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -56,19 +56,19 @@ private Func<ServiceResolver, object> ResolveInternal(ServiceDefinition service)
return delegateServiceDefinition.ImplementationDelegate;
case TypeServiceDefinition typeServiceDefinition:
return ResolveTypeService(typeServiceDefinition);
case ManyEnumerableServiceDefintion manyEnumerableServiceDefinition:
case ManyEnumerableServiceDefinition manyEnumerableServiceDefinition:
return ResolveManyEnumerableService(manyEnumerableServiceDefinition);
case EnumerableServiceDefintion enumerableServiceDefinition:
case EnumerableServiceDefinition enumerableServiceDefinition:
return ResolveEnumerableService(enumerableServiceDefinition);
default:
return resolver => null;
}
}

private Func<ServiceResolver, object> ResolveManyEnumerableService(ManyEnumerableServiceDefintion manyEnumerableServiceDefintion)
private Func<ServiceResolver, object> ResolveManyEnumerableService(ManyEnumerableServiceDefinition manyEnumerableServiceDefinition)
{
var elementDefinitions = manyEnumerableServiceDefintion.ServiceDefinitions.ToArray();
var elementType = manyEnumerableServiceDefintion.ElementType;
var elementDefinitions = manyEnumerableServiceDefinition.ServiceDefinitions.ToArray();
var elementType = manyEnumerableServiceDefinition.ElementType;
return resolver =>
{
var length = elementDefinitions.Length;
Expand All @@ -82,10 +82,10 @@ private Func<ServiceResolver, object> ResolveManyEnumerableService(ManyEnumerabl
};
}

private Func<ServiceResolver, object> ResolveEnumerableService(EnumerableServiceDefintion enumerableServiceDefintion)
private Func<ServiceResolver, object> ResolveEnumerableService(EnumerableServiceDefinition enumerableServiceDefinition)
{
var elementDefinitions = enumerableServiceDefintion.ServiceDefinitions.ToArray();
var elementType = enumerableServiceDefintion.ElementType;
var elementDefinitions = enumerableServiceDefinition.ServiceDefinitions.ToArray();
var elementType = enumerableServiceDefinition.ElementType;
return resolver =>
{
var length = elementDefinitions.Length;
Expand Down
4 changes: 2 additions & 2 deletions src/AspectCore.Core/DependencyInjection/ServiceTable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ private ServiceDefinition FindEnumerable(Type serviceType)
}
var elementType = serviceType.GetTypeInfo().GetGenericArguments()[0];
var elements = FindEnumerableElements(serviceType);
var enumerableServiceDefinition = new EnumerableServiceDefintion(serviceType, elementType, elements);
var enumerableServiceDefinition = new EnumerableServiceDefinition(serviceType, elementType, elements);
_linkedServiceDefinitions[serviceType] = new LinkedList<ServiceDefinition>(new ServiceDefinition[] { enumerableServiceDefinition });
return enumerableServiceDefinition;
}
Expand All @@ -129,7 +129,7 @@ private ServiceDefinition FindManyEnumerable(Type serviceType)
}
var elementType = serviceType.GetTypeInfo().GetGenericArguments()[0];
var elements = FindEnumerableElements(serviceType);
var enumerableServiceDefinition = new ManyEnumerableServiceDefintion(serviceType, elementType, elements);
var enumerableServiceDefinition = new ManyEnumerableServiceDefinition(serviceType, elementType, elements);
_linkedServiceDefinitions[serviceType] = new LinkedList<ServiceDefinition>(new ServiceDefinition[] { enumerableServiceDefinition });
return enumerableServiceDefinition;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public static TService CreateClassProxy<TService, TImplementation>(this IProxyGe
{
if (proxyGenerator == null)
{
throw new ArgumentNullException(nameof(ProxyTypeGenerator));
throw new ArgumentNullException(nameof(proxyGenerator));
}
return (TService)proxyGenerator.CreateClassProxy(typeof(TService), typeof(TImplementation), args ?? ArrayUtils.Empty<object>());
}
Expand Down
2 changes: 1 addition & 1 deletion src/AspectCore.Core/DynamicProxy/InterceptorCollector.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public IEnumerable<IInterceptor> Collect(MethodInfo serviceMethod, MethodInfo im
return HandleInjector(CollectFromService(serviceMethod).
Concat(CollectFromAdditionalSelector(serviceMethod, implementationMethod)).
HandleSort().
HandleMultiple()).Distinct().ToArray();
HandleMultiple()).ToArray();
});
}

Expand Down
Loading
Loading