110,537
社区成员
发帖
与我相关
我的任务
分享
interface IOpenPort
{
bool OpenPort(string portName, string baudRate, string dataBit, string parityBit, string stopBit);
bool OpenPort(string portName, int baudRate, int dataBit, Parity parityBit, StopBits stopBit);
}
// 用字符串 配置串口属性
private void Config(string portName, string baudRate, string dataBit, string parityBit, string stopBit)
{
sp.PortName = portName;
sp.BaudRate = Convert.ToInt32(baudRate);
sp.DataBits = Convert.ToInt32(dataBit);
sp.Parity = this.ParityBit(parityBit);//写了个私有方法返回校验枚举类型
sp.StopBits = this.StopBit(stopBit);//同样传入string 返回停止位枚举类型
}
// 直接传属性类型给串口
private void Config(string portName, int baudRate, int dataBit, Parity parityBit, StopBits stopBit)
{
sp.PortName = portName;
sp.BaudRate = baudRate;
sp.DataBits = dataBit;
sp.Parity = parityBit;
sp.StopBits = stopBit;
}
Class Comm:IOpenPort
{
// 这里实现接口的方法 用文来 本配置串口属性
public bool OpenPort(string portName, string baudRate, string dataBit,string parityBit,string stopBit)
{
this.Config(portName, baudRate, dataBit, parityBit, stopBit);
}
// 同样实现接口 用属性本身类型来配置串口
public bool OpenPort(string portName, int baudRate, int dataBit, Parity parityBit, StopBits stopBit)
{
this.Config(portName, baudRate, dataBit, parityBit, stopBit);
}
}
Class Comm:IOpenPort
{
// 这里实现接口的方法 用文来 本配置串口属性
public bool OpenPort(string portName, string baudRate, string dataBit,string parityBit,string stopBit)
{
// 发现两重方法体 内部代码完全一样 就是参数类型不一样 于是我想把共同部分抽象出来 减少代码量 该如何实现呢?
// 能不能使用object类型来做参数传递呢?
.....
try
{
this.Config(portName, baudRate, dataBit, parityBit, stopBit);
.......
}
....
}
// 同样实现接口 用属性本身类型来配置串口
public bool OpenPort(string portName, int baudRate, int dataBit, Parity parityBit, StopBits stopBit)
{
// 两个OpenPort 方法体完全一样
.....
try
{
this.Config(portName, baudRate, dataBit, parityBit, stopBit);
.......
}
....
}
}
Class Comm:IOpenPort
{
public bool OpenPort(string portName, string baudRate, string dataBit,string parityBit,string stopBit)
{
调用抽象方法
AbstractMethed(portName, baudRate, dataBit, parityBit, stopBit);
}
public bool OpenPort(string portName, int baudRate, int dataBit, Parity parityBit, StopBits stopBit)
{
调用抽象方法
AbstractMethed(portName, baudRate, dataBit, parityBit, stopBit);
}
// 相同部分抽象出来
private void AbstractMethed(object portName, object baudRate, object dataBit, object parityBit, object stopBit)
{
......
try
{
this.Config(portName, baudRate, dataBit, parityBit, stopBit);
......
}
.....
}
}