I have a C# class which contains the following:
public event Action<int> UnsupportedMessage;
It also has a method containing
if (template != null)
{
...
}
else
{
if (UnsupportedMessage != null)
{
UnsupportedMessage(templateId);
}
}
Another C# class called HealthCheck
contains public void MyMessage(int id)
.
What's supposed to happen is if template is null, an event should call HealthCheck.MyMessage()
.
So many things are wrong here. UnsupportedMessage
is always null so UnsupportedMessage(templateId);
never gets executed. Even is I remove if (UnsupportedMessage != null)
UnsupportedMessage(templateId);
will throw System.NullReferenceException: 'Object reference not set to an instance of an object.'
. Even if it did work, there's no reference to HealthCheck.MyMessage()
so I don;t know how it could ever be run.
How do I create an event to do what I need?
Update
I tried changing to UnsupportedMessage?.Invoke(templateId);
as mentioned in the below answer and added this in the line above it:
UnsupportedMessage += _handlerClass.UnsupportedMessage;
_handlerClass
is initialized by the constructor contains this method:
public void UnsupportedMessage(int value)
{
...
}
This initially seemed to work but it seems to be getting called many more times than I expected.