C#多页面共用一个实例
案例:
- C#与硬件设备交互,交互类里面有
打开设备
、数据接发
等1操作,在其他许多地方需要调用该设备 - 兼顾各代码的耦合度
采用单例模式,eg.CAN设备:
private CANClass(){}/// <summary>/// 获取CAN实例/// </summary>/// <param name="device_index"></param>/// <param name="baudRate"></param>/// <param name="channel"></param>/// <returns></returns>public static CANClass GetCanInstance(int device_index = 0, uint baudRate = (uint)BaudRateDataItems.BaudRate500kbps, int channel = 0){if (!canInstances.ContainsKey(device_index)){CANClass instance = new CANClass(baudRate, channel);canInstances.Add(device_index, instance);// 配置当前实例的一些参数}return canInstances[device_index];}
其他地方调用:
var can = CANClass.GetCanInstance();
单例模式:用于确保一个类只有一个实例,并提供一个全局访问点来访问该实例
根据device_index
进行唯一标识,如果想连接多个设备时,只需要GetCanInstance
不同的形参,同时保证同一形参前提下,项目内获取到的CANClass都是一样的