This PR introduces a source generator for platform that require pre-generated client code (e.g. Unity, NativeAOT, MAUI ...).
The source generator also replaces MagicOnion.Generator (moc).
Introduce MagicOnion.Client.SourceGenerator
MagicOnion.Client.SourceGenerator is shipped with MagicOnion.Client package.
This means that you no longer need to the install generator tool (moc) and setup additional build steps.
Supported development environments
Unity 2021.3.0f1 or later
.NET 6 or later
Visual Studio 2022 version 17.2 or later
Rider 2023.1 or later
Usage
Define a partial class with any name of your choosing within the application. Mark it with the MagicOnionClientGeneration attribute, and specify any service type found within the assembly where you want to search for the service interface.
For example, if the MyApp.Shared assembly contains MyApp.Shared.Services.IGreeterService and MyApp.Shared.Hubs.IChatHub, specify one of them.
using MagicOnion.Client;
[MagicOnionClientGeneration(typeof(MyApp.Shared.Services.IGreeterService))]
partial class MagicOnionGeneratedClientInitializer {}
Next, configure MessagePack to use the generated MessagePack Resolver. This is the same as when using the legacy MagicOnion.Generator.
You can specify options in the named constructor of the attribute.
DisableAutoRegistration: Sets whether to disable automatically calling Register during start-up. (Automatic registration requires .NET 5+ or Unity)
MessagePackFormatterNamespace: Sets the namespace of pre-generated MessagePackFormatters. The default value is MessagePack.Formatters.
Serializer: Sets the serializer used for message serialization. The default value is GenerateSerializerType.MessagePack.
Breaking changes
MagicOnion.Generator (moc) has been removed. The legacy generator is no longer supported.
[!WARNING]
While there is currently compatibility between MagicOnion.Client and MagicOnion.Generator (moc), there is no guarantee that this will be maintained.
This PR introduces a source generator for platform that require pre-generated client code (e.g. Unity, NativeAOT, MAUI ...). The source generator also replaces MagicOnion.Generator (moc).
Introduce MagicOnion.Client.SourceGenerator
MagicOnion.Client.SourceGenerator is shipped with MagicOnion.Client package. This means that you no longer need to the install generator tool (moc) and setup additional build steps.
Supported development environments
Usage
Define a
partial
class with any name of your choosing within the application. Mark it with theMagicOnionClientGeneration
attribute, and specify any service type found within the assembly where you want to search for the service interface.For example, if the
MyApp.Shared
assembly containsMyApp.Shared.Services.IGreeterService
andMyApp.Shared.Hubs.IChatHub
, specify one of them.Next, configure MessagePack to use the generated MessagePack Resolver. This is the same as when using the legacy MagicOnion.Generator.
Source generation options
You can specify options in the named constructor of the attribute.
DisableAutoRegistration
: Sets whether to disable automatically callingRegister
during start-up. (Automatic registration requires .NET 5+ or Unity)MessagePackFormatterNamespace
: Sets the namespace of pre-generated MessagePackFormatters. The default value isMessagePack.Formatters
.Serializer
: Sets the serializer used for message serialization. The default value isGenerateSerializerType.MessagePack
.Breaking changes
MagicOnion.Generator (moc) has been removed. The legacy generator is no longer supported.