Class CommandExtensions
Extension methods for the ICommand interface.
public static class CommandExtensions
- Inheritance
-
CommandExtensions
Examples
The following example shows how to wrap a command in a transport-ready Message<T> by calling ToMessage.
using System;
using Savvyio.Commands;
using Savvyio.Commands.Messaging;
using Savvyio.Messaging;
namespace ExampleApp.CommandMessages;
public sealed class CommandExtensionsUsage
{
public CommandExtensionsUsage()
{
var command = new CreateInvoiceCommandMessage("INV-42");
IMessage<CreateInvoiceCommandMessage> message = command.ToMessage(
new Uri("https://api.example.com/commands/invoices"),
nameof(CreateInvoiceCommandMessage),
options => options.MessageId = "msg-invoice-42");
MessageId = message.Id;
Type = message.Type;
Source = message.Source;
}
public string MessageId { get; }
public string Type { get; }
public string Source { get; }
}
public sealed record CreateInvoiceCommandMessage(string InvoiceId) : Command;
Methods
ToMessage<T>(T, Uri, string, Action<MessageOptions>)
Encloses the specified command to an instance of Message<T>.
public static IMessage<T> ToMessage<T>(this T command, Uri source, string type, Action<MessageOptions> setup = null) where T : ICommand
Parameters
commandTThe payload to attach within the message.
sourceUriThe context that describes the origin of the message.
typestringThe type that describes the type of
commandrelated to the originating occurrence.setupAction<MessageOptions>The MessageOptions which may be configured.
Returns
- IMessage<T>
An instance of Message<T> constraint to the ICommand interface.
Type Parameters
TThe type of the payload constraint to the ICommand interface.
Exceptions
- ArgumentNullException
commandcannot be null - or -sourcecannot be null.- ArgumentException
setupfailed to configure an instance of MessageOptions in a valid state.