Table of Contents

Class RpcTargetMetadata

Namespace
StreamJsonRpc
Assembly
StreamJsonRpc.dll

Describes an RPC target type, which can be an interface or a class.

public class RpcTargetMetadata
Inheritance
RpcTargetMetadata
Inherited Members

Properties

AliasedMethods

Gets method aliases that can be invoked on this RPC target.

public required IReadOnlyDictionary<string, IReadOnlyList<RpcTargetMetadata.TargetMethodMetadata>> AliasedMethods { get; init; }

Property Value

IReadOnlyDictionary<string, IReadOnlyList<RpcTargetMetadata.TargetMethodMetadata>>

Events

Gets the list of events that can be raised by this RPC target.

public required IReadOnlyList<RpcTargetMetadata.EventMetadata> Events { get; init; }

Property Value

IReadOnlyList<RpcTargetMetadata.EventMetadata>

Methods

Gets the (unaliased) methods that can be invoked on this RPC target.

public required IReadOnlyDictionary<string, IReadOnlyList<RpcTargetMetadata.TargetMethodMetadata>> Methods { get; init; }

Property Value

IReadOnlyDictionary<string, IReadOnlyList<RpcTargetMetadata.TargetMethodMetadata>>

TargetType

Gets the type of the RPC target, which can be an interface or a class.

public required Type TargetType { get; init; }

Property Value

Type

Methods

EnableDynamicEventHandlerCreation()

Enables dynamic generation of event handlers for EventHandler<TEventArgs> delegates where TEventArgs is a value type.

public static void EnableDynamicEventHandlerCreation()

Remarks

This method is not safe to use in NativeAOT applications. Such applications should either call StreamJsonRpc.RpcTargetMetadata.RegisterEventArgs<TEventArgs>() directly for each value-type type argument, or rely on source generation to do so.

FromClass(Type)

Creates a new instance of RpcTargetMetadata for the specified class type, including all of its RPC target members.

public static RpcTargetMetadata FromClass(Type classType)

Parameters

classType Type

The type representing the class for which to generate metadata. Must not be null and should be a concrete class type.

Returns

RpcTargetMetadata

An RpcTargetMetadata instance containing metadata for the specified class and its interfaces.

Remarks

While convenient, this method produces the least trimmable code. For a smaller trimmed application, use FromClass(Type, ClassAndInterfaces) instead.

FromClass(Type, ClassAndInterfaces)

Creates an instance of RpcTargetMetadata for the specified class type using the provided metadata. All public methods and events will be exposed to RPC clients, unless JsonRpcIgnoreAttribute is applied to them.

public static RpcTargetMetadata FromClass(Type classType, RpcTargetMetadata.ClassAndInterfaces metadata)

Parameters

classType Type

The class Type for which to generate metadata. Must be a non-null class type.

metadata RpcTargetMetadata.ClassAndInterfaces

The metadata describing the class and its interfaces. Must not be null and must correspond to the specified class type.

Returns

RpcTargetMetadata

An RpcTargetMetadata instance representing the public methods and events of the specified class.

Remarks

If metadata for the specified class type has already been created, the existing instance is returned. Otherwise, a new instance is generated. If all interfaces implemented by the class are present in the provided metadata, the resulting instance will be cached for later reuse.

Exceptions

ArgumentException

Thrown if the classType does not match the StreamJsonRpc.RpcTargetMetadata.ClassAndInterfaces.ClassType in the provided metadata.

FromClassNonPublic(Type)

Creates an instance of RpcTargetMetadata for the specified class type, including non-public members that are not attributed with JsonRpcIgnoreAttribute.

public static RpcTargetMetadata FromClassNonPublic(Type classType)

Parameters

classType Type

The type of the class for which to generate metadata. Must not be null.

Returns

RpcTargetMetadata

A RpcTargetMetadata instance containing metadata for the specified class type, including its non-public members.

Remarks

While convenient, this method produces the least trimmable code. For a smaller trimmed application, use FromClassNonPublic(Type, ClassAndInterfaces) instead.

FromClassNonPublic(Type, ClassAndInterfaces)

Creates an instance of RpcTargetMetadata for the specified class type using the provided metadata. All methods and events will be exposed to RPC clients, including non-public members, unless JsonRpcIgnoreAttribute is applied to them.

public static RpcTargetMetadata FromClassNonPublic(Type classType, RpcTargetMetadata.ClassAndInterfaces metadata)

Parameters

classType Type

The class Type for which to generate metadata. Must be a non-null class type.

metadata RpcTargetMetadata.ClassAndInterfaces

The metadata describing the class and its interfaces. Must not be null and must correspond to the specified class type.

Returns

RpcTargetMetadata

An RpcTargetMetadata instance representing the public methods and events of the specified class.

Remarks

If metadata for the specified class type has already been created, the existing instance is returned. Otherwise, a new instance is generated. If all interfaces implemented by the class are present in the provided metadata, the resulting instance will be cached for later reuse.

Exceptions

ArgumentException

Thrown if the classType does not match the StreamJsonRpc.RpcTargetMetadata.ClassAndInterfaces.ClassType in the provided metadata.

FromInterface(InterfaceCollection)

Creates metadata describing the RPC target for the specified set of interfaces.

public static RpcTargetMetadata FromInterface(RpcTargetMetadata.InterfaceCollection interfaces)

Parameters

interfaces RpcTargetMetadata.InterfaceCollection

A collection of interfaces, including the primary interface and any interfaces it derives from, to generate metadata for.

Returns

RpcTargetMetadata

An instance of RpcTargetMetadata representing the RPC target metadata for the provided interfaces.

Remarks

If metadata for the specified interface has already been created, the existing instance is returned. Otherwise, a new metadata instance is generated. This method is typically used to obtain metadata required for dispatching or proxying RPC calls based on an interface definition.

Exceptions

ArgumentException

Thrown if interfaces does not represent all the interfaces that the target interface derives from.

FromInterface(Type)

Creates an instance of RpcTargetMetadata that describes the specified RPC contract interface.

public static RpcTargetMetadata FromInterface(Type rpcContract)

Parameters

rpcContract Type

The interface type that defines the RPC contract. Must not be null and must represent an interface type.

Returns

RpcTargetMetadata

An RpcTargetMetadata instance that provides metadata for the specified RPC contract interface.

Remarks

If metadata for the specified interface has already been created, the existing instance is returned. Otherwise, a new metadata instance is generated. This method is typically used to obtain metadata required for dispatching or proxying RPC calls based on an interface definition.

While convenient, this method produces the least trimmable code. For a smaller trimmed application, use FromInterface(InterfaceCollection) instead.