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都是一样的