Skip to content

Commit 8033626

Browse files
authored
fix NullReferenceException when using method with 'in' arguments (#290)
Signed-off-by: nivalxer <nivalxer@gmail.com> Signed-off-by: nivalxer <nivalxer@gmail.com>
1 parent 0722175 commit 8033626

10 files changed

Lines changed: 68 additions & 28 deletions

File tree

src/AspectCore.Extensions.Reflection/MethodReflector.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,12 @@ protected virtual Func<object, object[], object> CreateInvoker()
8686

8787
Func<object, object[], object> CreateDelegate(Action callback = null)
8888
{
89+
#if NET6_0
90+
//https://github.com/dotnet/runtime/issues/67084
91+
ilGen.Emit(OpCodes.Callvirt, _reflectionInfo);
92+
#else
8993
ilGen.EmitCall(OpCodes.Callvirt, _reflectionInfo, null);
94+
#endif
9095
callback?.Invoke();
9196
if (_reflectionInfo.ReturnType == typeof(void)) ilGen.Emit(OpCodes.Ldnull);
9297
else if (_reflectionInfo.ReturnType.GetTypeInfo().IsValueType)

tests/AspectCore.Extensions.Autofac.Test/AspectCore.Extensions.Autofac.Test.csproj

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@
1414

1515
<ItemGroup>
1616
<ProjectReference Include="..\..\src\AspectCore.Extensions.Autofac\AspectCore.Extensions.Autofac.csproj" />
17-
<ProjectReference
18-
Include="..\..\src\AspectCore.Extensions.DependencyInjection\AspectCore.Extensions.DependencyInjection.csproj" />
17+
<ProjectReference Include="..\..\src\AspectCore.Extensions.DependencyInjection\AspectCore.Extensions.DependencyInjection.csproj" />
1918
</ItemGroup>
2019

2120
<ItemGroup Condition=" '$(TargetFramework)' != 'net6.0' ">
@@ -29,13 +28,13 @@
2928
</ItemGroup>
3029

3130
<ItemGroup>
32-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
33-
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
31+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" />
32+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
3433
<PrivateAssets>all</PrivateAssets>
3534
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3635
</PackageReference>
3736
<PackageReference Include="System.Runtime.Serialization.Primitives" Version="4.3.0" />
38-
<PackageReference Include="xunit" Version="2.4.1" />
37+
<PackageReference Include="xunit" Version="2.4.2" />
3938
</ItemGroup>
4039

4140
</Project>

tests/AspectCore.Extensions.Configuration.Tests/AspectCore.Extensions.Configuration.Tests.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
</ItemGroup>
2323

2424
<ItemGroup>
25-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
26-
<PackageReference Include="xunit" Version="2.4.1" />
27-
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
25+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" />
26+
<PackageReference Include="xunit" Version="2.4.2" />
27+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
2828
<PrivateAssets>all</PrivateAssets>
2929
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3030
</PackageReference>

tests/AspectCore.Extensions.DependencyInjection.Test/AspectCore.Extensions.DependencyInjection.Test.csproj

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
</PropertyGroup>
1313

1414
<ItemGroup>
15-
<ProjectReference
16-
Include="..\..\src\AspectCore.Extensions.DependencyInjection\AspectCore.Extensions.DependencyInjection.csproj" />
15+
<ProjectReference Include="..\..\src\AspectCore.Extensions.DependencyInjection\AspectCore.Extensions.DependencyInjection.csproj" />
1716
</ItemGroup>
1817

1918
<ItemGroup Condition=" '$(TargetFramework)' != 'net6.0' ">
@@ -25,13 +24,13 @@
2524
</ItemGroup>
2625

2726
<ItemGroup>
28-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
29-
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
27+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" />
28+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
3029
<PrivateAssets>all</PrivateAssets>
3130
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3231
</PackageReference>
3332
<PackageReference Include="System.Runtime.Serialization.Primitives" Version="4.3.0" />
34-
<PackageReference Include="xunit" Version="2.4.1" />
33+
<PackageReference Include="xunit" Version="2.4.2" />
3534
<PackageReference Include="System.Reflection" Version="4.3.0" />
3635
<PackageReference Include="System.Linq" Version="4.3.0" />
3736
</ItemGroup>
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
using Microsoft.Extensions.DependencyInjection;
2+
using System;
3+
using Xunit;
4+
5+
namespace AspectCore.Extensions.DependencyInjection.Test.Issues
6+
{
7+
// https://github.com/dotnetcore/AspectCore-Framework/issues/287
8+
public class ParamWithInTests
9+
{
10+
public interface IParamWithIn
11+
{
12+
object TestFunc(string val, in ReadOnlyMemory<byte> bytes);
13+
}
14+
15+
public class ParamWithIn : IParamWithIn
16+
{
17+
public object TestFunc(string val, in ReadOnlyMemory<byte> bytes)
18+
{
19+
return bytes;
20+
}
21+
}
22+
23+
[Fact]
24+
public void ParamWithIn_Test()
25+
{
26+
var sp = new ServiceCollection()
27+
.AddScoped<IParamWithIn, ParamWithIn>()
28+
.BuildDynamicProxyProvider();
29+
30+
var service = sp.GetRequiredService<IParamWithIn>();
31+
ReadOnlyMemory<byte> bytes = new ReadOnlyMemory<byte>(new byte[] {0, 1, 2});
32+
var obj = service.TestFunc("val1", bytes);
33+
Assert.NotNull(obj);
34+
Assert.Equal(bytes, obj);
35+
}
36+
}
37+
}

tests/AspectCore.Extensions.Hosting.Tests/AspectCore.Extensions.Hosting.Tests.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
</PropertyGroup>
77

88
<ItemGroup>
9-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
10-
<PackageReference Include="xunit" Version="2.4.1" />
11-
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
9+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" />
10+
<PackageReference Include="xunit" Version="2.4.2" />
11+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
1212
<PrivateAssets>all</PrivateAssets>
1313
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1414
</PackageReference>

tests/AspectCore.Extensions.LightInject.Test/AspectCore.Extensions.LightInject.Test.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111
</PropertyGroup>
1212

1313
<ItemGroup>
14-
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
14+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
1515
<PrivateAssets>all</PrivateAssets>
1616
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1717
</PackageReference>
18-
<PackageReference Include="xunit" Version="2.4.1" />
19-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
18+
<PackageReference Include="xunit" Version="2.4.2" />
19+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" />
2020
</ItemGroup>
2121

2222
<ItemGroup>

tests/AspectCore.Extensions.Reflection.Test/AspectCore.Extensions.Reflection.Test.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616
</ItemGroup>
1717

1818
<ItemGroup>
19-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
19+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" />
2020
<PackageReference Include="System.ComponentModel.TypeConverter" Version="4.3.0" />
21-
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
21+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
2222
<PrivateAssets>all</PrivateAssets>
2323
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2424
</PackageReference>
2525
<PackageReference Include="System.Runtime.Serialization.Primitives" Version="4.3.0" />
26-
<PackageReference Include="xunit" Version="2.4.1" />
26+
<PackageReference Include="xunit" Version="2.4.2" />
2727
<PackageReference Include="System.Reflection" Version="4.3.0" />
2828
<PackageReference Include="System.Linq" Version="4.3.0" />
2929
<PackageReference Include="NSubstitute" Version="4.2.2" />

tests/AspectCore.Extensions.Windsor.Test/AspectCore.Extensions.Windsor.Test.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99
<ItemGroup>
1010
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Specification.Tests" Version="3.1.16" />
11-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
12-
<PackageReference Include="xunit" Version="2.4.1" />
13-
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
11+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" />
12+
<PackageReference Include="xunit" Version="2.4.2" />
13+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
1414
<PrivateAssets>all</PrivateAssets>
1515
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1616
</PackageReference>

tests/AspectCore.Tests/AspectCore.Tests.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
</PropertyGroup>
66
<ItemGroup>
77
<PackageReference Include="Microsoft.Extensions.ObjectPool" Version="5.0.7" />
8-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
9-
<PackageReference Include="xunit" Version="2.4.1" />
10-
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
8+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" />
9+
<PackageReference Include="xunit" Version="2.4.2" />
10+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
1111
<PrivateAssets>all</PrivateAssets>
1212
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1313
</PackageReference>

0 commit comments

Comments
 (0)