我在类中有以下代码来设置串口甚至处理程序。请勿嵌套类型警告(C#)
我得到两个警告; CA1034(不要嵌套类型),它告诉我将我的delgate私有化(这将阻止我设置继承类中的偶处理程序)和CA1009(将事件的第二个参数声明为EventArgs或一个扩展EventArgs的类型,名为'e'),我不明白。
我的代码如下
myPort.DataReceived += new SerialDataReceivedEventHandler(port_OnDataRecived); //Setup when port is opened
private void port_OnDataRecived(object sender, SerialDataReceivedEventArgs e)
{
int lengthToRead = myPort.BytesToRead;
byte[] rxBytes = new byte[lengthToRead];
myPort.Read(rxBytes, 0, lengthToRead);
PacketReceived(rxBytes, e);
}
public delegate void PacketReceivedEventHandler(object sender, byte[] packet);
public event PacketReceivedEventHandler OnPacketReceived;
public virtual void PacketReceived(byte[] packet, EventArgs e)
{
if (OnPacketReceived != null)
{
OnPacketReceived(this, packet);
}
}
我一直在看MSDN文章和一些所谓的问题,但我不能对有关建议的修复回我自己的代码。 This answer排序是有道理的,但我的转换代码看起来像它会导致
OnPacketReceived(this, packet);
与
handle(this, new PacketReceivedEventHandler();
这需要一个参数(void (object, byte[]) target)
(这是我卡住)所取代。至于尝试修复CA1034警告,我甚至没有看到我写的是如何嵌套的类型,而MSDN文章也没有包含如何解决规则违规的示例。
尝试通过删除委托和事件,并使用'EventArgs',其中'PacketReceivedEventArgs'是一个扩展'System.EventArgs'并包含您需要的信息属性的类 –