IMessageProvider
IMessageProvider exposes IMessage property. It is used by, e.g., exception classes that can carry message.
/// <summary>Interface for classes that can provide <see cref="IMessage"/>.</summary>
public interface IMessageProvider
{
/// <summary>Associated message</summary>
IMessage? Message { get; set; }
}
.SetMessage(message) to objects IMessageProvider.
// Create message description
IMessageDescription invalidCastFromTo = new MessageDescription("mscorlib.InvalidCast_FromTo", 0xA345037D, "Invalid cast from '{0}' to '{1}'.").SetHResult(0x80004002).SetSeverity(MessageLevel.Error).SetException(typeof(InvalidCastException));
// Create message
IMessage msg = invalidCastFromTo.New("int", "string");
// Create object and attach message
MyClass obj = new MyClass().SetMessage(msg).SetReadOnly();
public class MyClass : ReadOnlyAssignableClass, IMessageProvider
{
/// <summary>Associated message.</summary>
protected IMessage? message;
/// <summary>Associated message.</summary>
public IMessage? Message { get => message; set => this.AssertWritable().message = value; }
}
Full Example
Full example
using Avalanche.Utilities;
using Avalanche.Message;
using Avalanche.StatusCode;
using Avalanche.Template;
class messageprovider
{
public static void Run()
{
// <01>
// Create message description
IMessageDescription invalidCastFromTo = new MessageDescription("mscorlib.InvalidCast_FromTo", 0xA345037D, "Invalid cast from '{0}' to '{1}'.").SetHResult(0x80004002).SetSeverity(MessageLevel.Error).SetException(typeof(InvalidCastException));
// Create message
IMessage msg = invalidCastFromTo.New("int", "string");
// Create object and attach message
MyClass obj = new MyClass().SetMessage(msg).SetReadOnly();
// </01>
}
// <99>
public class MyClass : ReadOnlyAssignableClass, IMessageProvider
{
/// <summary>Associated message.</summary>
protected IMessage? message;
/// <summary>Associated message.</summary>
public IMessage? Message { get => message; set => this.AssertWritable().message = value; }
}
// </99>
}