前言
在學習Halcon的過程中給,學習了繪制對象綁定事件的方式,它通過將方法作為參數傳遞進去在內部實現其功能。 在C#中如何將方法作為參數傳遞呢,當然是用委托。
此案例的基本流程
1、創建一個消息模型MessageModel(MessageEventsModel):作為委托中的參數。
2、創建一個消息發送者SqlMessageSender :模擬操作,然后將操作消息發送出去。
3、創建一個消息接收者MessageReceiver:接收發送者發送的消息。
4、在程序如何Main中創建發送者(SqlMessageSender)和接收者(MessageReceiver)對象。
5、將接收方法作為參數傳入發送者創建的OnMessageUpdate方法中。
OnMessageUpdate(messageReceiver.MessageReceivedCallback);?
一、預覽
二、代碼
internal static class Program
{
static void Main()
{
SqlMessageSender sqlMessageSender = new SqlMessageSender();
MessageReceiver messageReceiver = new MessageReceiver();
sqlMessageSender.OnMessageUpdate(messageReceiver.MessageReceivedCallback);
sqlMessageSender.Add();
sqlMessageSender.Delete();
sqlMessageSender.Update();
sqlMessageSender.Query();
}
}
#region 消息接收者
public class MessageReceiver
{
public void MessageReceivedCallback(MessageEventsModel messageModel)
{
Console.WriteLine($"【{this.GetType().Name}】=>接收到消息【{messageModel.Message},消息等級:{messageModel.Level}】");
}
}
#endregion
#region 消息發布者
public class SqlMessageSender
{
private MessaegeUpdateCallbackClass InternalFunc;
public void OnMessageUpdate(MessaegeUpdateCallbackClass func)
{
InternalFunc = func;
func?.Invoke(new MessageEventsModel(MessageLevel.Info, $"回調方法傳遞"));
}
public void Add()
{
OnFunc("添加");
}
public void Delete()
{
OnFunc("刪除");
}
public void Update()
{
OnFunc("修改");
}
public void Query()
{
OnFunc("查詢");
}
private void OnFunc(string message)
{
InternalFunc?.Invoke(new MessageEventsModel(MessageLevel.Info, $"執行:{message} "));
}
}
#endregion
#region 消息
public delegate void MessaegeUpdateCallbackClass(MessageEventsModel MessageModel);
public class MessageEventsModel
{
public string Message { get; set; }
public MessageLevel Level { get; set; }
public MessageEventsModel(MessageLevel level, string message)
{
Level = level;
Message = message;
}
}
public enum MessageLevel
{
None = 0,
Info,
Warning,
Error,
Fatal,
}
#endregion
作者:編程筆記in
出處:blog.csdn.net/weixin_43626218/article/details/141433450
該文章在 2025/4/19 14:54:46 編輯過