Raise event with data

CSharp · Console

/Program.cs

using System;
using Moq;
					
var mockCommunication = new Mock<IPeakCommunication>();

// Setup with callback which uses Raise
mockCommunication.Setup(x => x.Send(It.IsAny<RequestData>()))
    .Callback((RequestData r) => mockCommunication.Raise(c => c.RequestReceived += null, r));

// Act
var obj = mockCommunication.Object;
// sample subscriber:
obj.RequestReceived += rd => Console.WriteLine(rd.Data);
obj.Send(new RequestData { Data = 42 }); // Prints 42

// sample data object
public class RequestData
{
    public int Data { get; set; }
}

public interface IPeakCommunication : IDisposable
{
    #region Delegates

    delegate void PeakRequestReceivedHandler(RequestData data);

    #endregion

    #region Events

    event PeakRequestReceivedHandler? RequestReceived;

    #endregion

    #region Methods

    void Send(RequestData data);

    #endregion
}
;