C#委托运用-将方法作为参数
|
admin
2025年4月19日 14:54
本文热度 1610
|
前言
在学习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 编辑过