Generated by DocFX

Interface IMessageService

The Messenger is a class allowing objects to exchange messages.

Namespace: ISynergy.Framework.Core.Abstractions.Services
Assembly: ISynergy.Framework.Core.dll
Syntax
public interface IMessageService

Methods

View Source

Register<TMessage>(Object, Action<TMessage>, Boolean)

Registers a recipient for a type of message TMessage. The action parameter will be executed when a corresponding message is sent.

Registering a recipient does not create a hard reference to it, so if this recipient is deleted, no memory leak is caused.

Declaration
void Register<TMessage>(object recipient, Action<TMessage> action, bool keepTargetAlive = false)
Parameters
Type Name Description
System.Object recipient

The recipient that will receive the messages.

Action<TMessage> action

The action that will be executed when a message of type TMessage is sent. IMPORTANT: Note that closures are not supported at the moment due to the use of WeakActions (see http://stackoverflow.com/questions/25730530/).

System.Boolean keepTargetAlive

If true, the target of the Action will be kept as a hard reference, which might cause a memory leak. You should only set this parameter to true if the action is using closures. See http://galasoft.ch/s/mvvmweakaction.

Type Parameters
Name Description
TMessage

The type of message that the recipient registers for.

View Source

Register<TMessage>(Object, Boolean, Action<TMessage>, Boolean)

Registers a recipient for a type of message TMessage. The action parameter will be executed when a corresponding message is sent. See the receiveDerivedMessagesToo parameter for details on how messages deriving from TMessage (or, if TMessage is an interface, messages implementing TMessage) can be received too.

Registering a recipient does not create a hard reference to it, so if this recipient is deleted, no memory leak is caused.

Declaration
void Register<TMessage>(object recipient, bool receiveDerivedMessagesToo, Action<TMessage> action, bool keepTargetAlive = false)
Parameters
Type Name Description
System.Object recipient

The recipient that will receive the messages.

System.Boolean receiveDerivedMessagesToo

If true, message types deriving from TMessage will also be transmitted to the recipient. For example, if a SendOrderMessage and an ExecuteOrderMessage derive from OrderMessage, registering for OrderMessage and setting receiveDerivedMessagesToo to true will send SendOrderMessage and ExecuteOrderMessage to the recipient that registered.

Also, if TMessage is an interface, message types implementing TMessage will also be transmitted to the recipient. For example, if a SendOrderMessage and an ExecuteOrderMessage implement IOrderMessage, registering for IOrderMessage and setting receiveDerivedMessagesToo to true will send SendOrderMessage and ExecuteOrderMessage to the recipient that registered.

Action<TMessage> action

The action that will be executed when a message of type TMessage is sent.

System.Boolean keepTargetAlive

If true, the target of the Action will be kept as a hard reference, which might cause a memory leak. You should only set this parameter to true if the action is using closures. See http://galasoft.ch/s/mvvmweakaction.

Type Parameters
Name Description
TMessage

The type of message that the recipient registers for.

View Source

Register<TMessage>(Object, Object, Action<TMessage>, Boolean)

Registers a recipient for a type of message TMessage. The action parameter will be executed when a corresponding message is sent. See the receiveDerivedMessagesToo parameter for details on how messages deriving from TMessage (or, if TMessage is an interface, messages implementing TMessage) can be received too.

Registering a recipient does not create a hard reference to it, so if this recipient is deleted, no memory leak is caused.

Declaration
void Register<TMessage>(object recipient, object token, Action<TMessage> action, bool keepTargetAlive = false)
Parameters
Type Name Description
System.Object recipient

The recipient that will receive the messages.

System.Object token

A token for a messaging channel. If a recipient registers using a token, and a sender sends a message using the same token, then this message will be delivered to the recipient. Other recipients who did not use a token when registering (or who used a different token) will not get the message. Similarly, messages sent without any token, or with a different token, will not be delivered to that recipient.

Action<TMessage> action

The action that will be executed when a message of type TMessage is sent.

System.Boolean keepTargetAlive

If true, the target of the Action will be kept as a hard reference, which might cause a memory leak. You should only set this parameter to true if the action is using closures. See http://galasoft.ch/s/mvvmweakaction.

Type Parameters
Name Description
TMessage

The type of message that the recipient registers for.

View Source

Register<TMessage>(Object, Object, Boolean, Action<TMessage>, Boolean)

Registers a recipient for a type of message TMessage. The action parameter will be executed when a corresponding message is sent. See the receiveDerivedMessagesToo parameter for details on how messages deriving from TMessage (or, if TMessage is an interface, messages implementing TMessage) can be received too.

Registering a recipient does not create a hard reference to it, so if this recipient is deleted, no memory leak is caused.

Declaration
void Register<TMessage>(object recipient, object token, bool receiveDerivedMessagesToo, Action<TMessage> action, bool keepTargetAlive = false)
Parameters
Type Name Description
System.Object recipient

The recipient that will receive the messages.

System.Object token

A token for a messaging channel. If a recipient registers using a token, and a sender sends a message using the same token, then this message will be delivered to the recipient. Other recipients who did not use a token when registering (or who used a different token) will not get the message. Similarly, messages sent without any token, or with a different token, will not be delivered to that recipient.

System.Boolean receiveDerivedMessagesToo

If true, message types deriving from TMessage will also be transmitted to the recipient. For example, if a SendOrderMessage and an ExecuteOrderMessage derive from OrderMessage, registering for OrderMessage and setting receiveDerivedMessagesToo to true will send SendOrderMessage and ExecuteOrderMessage to the recipient that registered.

Also, if TMessage is an interface, message types implementing TMessage will also be transmitted to the recipient. For example, if a SendOrderMessage and an ExecuteOrderMessage implement IOrderMessage, registering for IOrderMessage and setting receiveDerivedMessagesToo to true will send SendOrderMessage and ExecuteOrderMessage to the recipient that registered.

Action<TMessage> action

The action that will be executed when a message of type TMessage is sent.

System.Boolean keepTargetAlive

If true, the target of the Action will be kept as a hard reference, which might cause a memory leak. You should only set this parameter to true if the action is using closures. See http://galasoft.ch/s/mvvmweakaction.

Type Parameters
Name Description
TMessage

The type of message that the recipient registers for.

View Source

Send<TMessage>(TMessage)

Sends a message to registered recipients. The message will reach all recipients that registered for this message type using one of the Register methods.

Declaration
void Send<TMessage>(TMessage message)
Parameters
Type Name Description
TMessage message

The message to send to registered recipients.

Type Parameters
Name Description
TMessage

The type of message that will be sent.

View Source

Send<TMessage>(TMessage, Object)

Sends a message to registered recipients. The message will reach only recipients that registered for this message type using one of the Register methods, and that are of the targetType.

Declaration
void Send<TMessage>(TMessage message, object token)
Parameters
Type Name Description
TMessage message

The message to send to registered recipients.

System.Object token

A token for a messaging channel. If a recipient registers using a token, and a sender sends a message using the same token, then this message will be delivered to the recipient. Other recipients who did not use a token when registering (or who used a different token) will not get the message. Similarly, messages sent without any token, or with a different token, will not be delivered to that recipient.

Type Parameters
Name Description
TMessage

The type of message that will be sent.

View Source

Send<TMessage, TTarget>(TMessage)

Sends a message to registered recipients. The message will reach only recipients that registered for this message type using one of the Register methods, and that are of the targetType.

Declaration
void Send<TMessage, TTarget>(TMessage message)
Parameters
Type Name Description
TMessage message

The message to send to registered recipients.

Type Parameters
Name Description
TMessage

The type of message that will be sent.

TTarget

The type of recipients that will receive the message. The message won't be sent to recipients of another type.

View Source

Unregister(Object)

Unregisters a messager recipient completely. After this method is executed, the recipient will not receive any messages anymore.

Declaration
void Unregister(object recipient)
Parameters
Type Name Description
System.Object recipient

The recipient that must be unregistered.

View Source

Unregister<TMessage>(Object)

Unregisters a message recipient for a given type of messages only. After this method is executed, the recipient will not receive messages of type TMessage anymore, but will still receive other message types (if it registered for them previously).

Declaration
void Unregister<TMessage>(object recipient)
Parameters
Type Name Description
System.Object recipient

The recipient that must be unregistered.

Type Parameters
Name Description
TMessage

The type of messages that the recipient wants to unregister from.

View Source

Unregister<TMessage>(Object, Action<TMessage>)

Unregisters a message recipient for a given type of messages and for a given action. Other message types will still be transmitted to the recipient (if it registered for them previously). Other actions that have been registered for the message type TMessage and for the given recipient (if available) will also remain available.

Declaration
void Unregister<TMessage>(object recipient, Action<TMessage> action)
Parameters
Type Name Description
System.Object recipient

The recipient that must be unregistered.

Action<TMessage> action

The action that must be unregistered for the recipient and for the message type TMessage.

Type Parameters
Name Description
TMessage

The type of messages that the recipient wants to unregister from.

View Source

Unregister<TMessage>(Object, Object)

Unregisters a message recipient for a given type of messages only and for a given token. After this method is executed, the recipient will not receive messages of type TMessage anymore with the given token, but will still receive other message types or messages with other tokens (if it registered for them previously).

Declaration
void Unregister<TMessage>(object recipient, object token)
Parameters
Type Name Description
System.Object recipient

The recipient that must be unregistered.

System.Object token

The token for which the recipient must be unregistered.

Type Parameters
Name Description
TMessage

The type of messages that the recipient wants to unregister from.

View Source

Unregister<TMessage>(Object, Object, Action<TMessage>)

Unregisters a message recipient for a given type of messages, for a given action and a given token. Other message types will still be transmitted to the recipient (if it registered for them previously). Other actions that have been registered for the message type TMessage, for the given recipient and other tokens (if available) will also remain available.

Declaration
void Unregister<TMessage>(object recipient, object token, Action<TMessage> action)
Parameters
Type Name Description
System.Object recipient

The recipient that must be unregistered.

System.Object token

The token for which the recipient must be unregistered.

Action<TMessage> action

The action that must be unregistered for the recipient and for the message type TMessage.

Type Parameters
Name Description
TMessage

The type of messages that the recipient wants to unregister from.

Extension Methods

Matrix.Replace<T>(T, Object, Object)
Matrix.IsEqual(Object, Object, Decimal, Decimal)
EntityBaseExtensions.HasProperty(Object, String)
ArrayExtensions.Concatenate<T>(T, T[])
CollectionExtensions.FromHierarchy<TSource>(TSource, Func<TSource, TSource>, Func<TSource, Boolean>)
CollectionExtensions.FromHierarchy<TSource>(TSource, Func<TSource, TSource>)
ObjectExtensions.Clone<T>(T)
ObjectExtensions.To<T>(Object)
ObjectExtensions.To(Object, Type)
ObjectExtensions.HasMethod(Object, String)
ObjectExtensions.AddressOf<T>(T)
ReflectionExtensions.GetIdentityValue<T>(T)
ReflectionExtensions.GetIdentityValue<T, TResult>(T)
ReflectionExtensions.GetIdentityProperty<T>(T)
ReflectionExtensions.HasIdentityProperty<T>(T)
ReflectionExtensions.GetPropertyValue<T, TResult>(T, String, TResult)
ReflectionExtensions.GetPropertyInfo<T, TValue>(T, Expression<Func<T, TValue>>)
ReflectionExtensions.GetTitleValue<T>(T)
ReflectionExtensions.HasParentIdentityProperty<T>(T)
ReflectionExtensions.GetParentIdentityProperty<T>(T)
ReflectionExtensions.IsFreeApplication<T>(T)