diff --git a/Directory.Packages.props b/Directory.Packages.props
index 2dd489a7..5df56d49 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -27,7 +27,7 @@
-
+
diff --git a/src/StreamJsonRpc/LoadableTypeCollection.cs b/src/StreamJsonRpc/LoadableTypeCollection.cs
index d1ca2489..fcf58048 100644
--- a/src/StreamJsonRpc/LoadableTypeCollection.cs
+++ b/src/StreamJsonRpc/LoadableTypeCollection.cs
@@ -4,8 +4,6 @@
using System.Collections;
using System.Collections.Immutable;
using System.Diagnostics.CodeAnalysis;
-using System.Runtime.CompilerServices;
-using Microsoft;
namespace StreamJsonRpc;
@@ -62,14 +60,19 @@ internal bool TryGetType(string fullName, [NotNullWhen(true), DynamicallyAccesse
return false;
}
- private struct LoadableType([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] Type type) : IEquatable
+ private struct LoadableType : IEquatable
{
+ public LoadableType([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] Type type)
+ {
+ this.Type = type;
+ }
+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)]
- public Type Type => type;
+ public Type Type { get; }
public bool Equals(LoadableType other) => this.Type == other.Type;
- public override int GetHashCode() => type.GetHashCode();
+ public override int GetHashCode() => this.Type.GetHashCode();
public override bool Equals(object? obj) => obj is LoadableType other && this.Equals(other);
}
diff --git a/src/StreamJsonRpc/Reflection/JsonRpcProxyMappingAttribute.cs b/src/StreamJsonRpc/Reflection/JsonRpcProxyMappingAttribute.cs
index 2df17d30..cc26592b 100644
--- a/src/StreamJsonRpc/Reflection/JsonRpcProxyMappingAttribute.cs
+++ b/src/StreamJsonRpc/Reflection/JsonRpcProxyMappingAttribute.cs
@@ -10,20 +10,27 @@ namespace StreamJsonRpc.Reflection;
/// An attribute that is used by our source generator to map an RPC interface to a
/// source generated proxy class.
///
-///
-/// The source generated proxy class.
-/// This must implement the interface the attribute is applied to,
-/// derive from ,
-/// and declare a public constructor with a particular signature.
-///
[AttributeUsage(AttributeTargets.Interface, AllowMultiple = true)]
[EditorBrowsable(EditorBrowsableState.Never)]
-public class JsonRpcProxyMappingAttribute(
- [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.Interfaces)] Type proxyClass) : Attribute
+public class JsonRpcProxyMappingAttribute : Attribute
{
///
- /// Gets the proxy class type implements the RPC interface.
+ /// Initializes a new instance of the class.
+ ///
+ ///
+ /// The source generated proxy class.
+ /// This must implement the interface the attribute is applied to,
+ /// derive from ,
+ /// and declare a public constructor with a particular signature.
+ ///
+ public JsonRpcProxyMappingAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.Interfaces)] Type proxyClass)
+ {
+ this.ProxyClass = proxyClass;
+ }
+
+ ///
+ /// Gets the proxy class type that implements the RPC interface.
///
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.Interfaces)]
- public Type ProxyClass => proxyClass;
+ public Type ProxyClass { get; }
}
diff --git a/src/StreamJsonRpc/RpcTargetMetadata.cs b/src/StreamJsonRpc/RpcTargetMetadata.cs
index 5cd8285f..30abb6c8 100644
--- a/src/StreamJsonRpc/RpcTargetMetadata.cs
+++ b/src/StreamJsonRpc/RpcTargetMetadata.cs
@@ -491,10 +491,15 @@ private static IReadOnlyList GetMissingInterfacesFromSet([DynamicallyAcces
private static MethodInfo GetMethodInfo(IMethodShape shape) => (MethodInfo)(shape.MethodBase ?? throw new ArgumentException(Resources.FormatAttributeProviderRequired($"{shape.DeclaringType.Type.FullName}.{shape.Name}"), nameof(shape)));
- internal struct RpcTargetInterface([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods | DynamicallyAccessedMemberTypes.PublicEvents)] Type iface)
+ internal struct RpcTargetInterface
{
+ public RpcTargetInterface([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods | DynamicallyAccessedMemberTypes.PublicEvents)] Type iface)
+ {
+ this.Interface = iface;
+ }
+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods | DynamicallyAccessedMemberTypes.PublicEvents)]
- public Type Interface => iface;
+ public Type Interface { get; }
}
///
diff --git a/test/NativeAOTCompatibility.Test/NativeAOTCompatibility.Test.csproj b/test/NativeAOTCompatibility.Test/NativeAOTCompatibility.Test.csproj
index 9352f780..0f60cc88 100644
--- a/test/NativeAOTCompatibility.Test/NativeAOTCompatibility.Test.csproj
+++ b/test/NativeAOTCompatibility.Test/NativeAOTCompatibility.Test.csproj
@@ -2,7 +2,7 @@
- net8.0
+ net10.0
false
true
true