我需要从另一个班级举起一个活动 - 我知道这是不可能的 - 但我需要一个解决方法。
现在我正在做以下
这是必须提升事件的类
internal class DataTransfer
{
public delegate void EventHandler(object sender, OnReaderCommonEventArgs e);
public event EventHandler _OnSerialNumber;
public event EventHandler _OnReaderType
Task DataHandler()
{
//Recieving-Data and Stuff
_OnSerialNumber(this, new OnReaderCommonEventArgs { SerialNumber = RFIDParser.ParseSerialNumber(data) });
_OnReaderType(this, new OnReaderCommonEventArgs { ReaderType = RFIDParser.ParseReaderType(data) });
}
}
在Main-Class中,将由用户使用。因此,用户只能从此类对象订阅该事件:
public partial class PUR_100U
{
public delegate void EventHandler(object sender, OnReaderCommonEventArgs e);
public event EventHandler OnSerialNumber;
public event EventHandler OnReaderType;
public PUR_100U(int portnumber)
{
dataTransfer = new DataTransfer(portnumber, GetIdentifierList());
dataTransfer._OnSerialNumber += dataTransfer__OnSerialNumber;
dataTransfer._OnReaderType += dataTransfer__OnReaderType;
}
void dataTransfer__OnSerialNumber(object sender, OnReaderCommonEventArgs e)
{
if (OnSerialNumber != null) { OnSerialNumber(this, new OnReaderCommonEventArgs { SerialNumber = e.SerialNumber }); }
}
void dataTransfer__OnReaderType(object sender, OnReaderCommonEventArgs e)
{
if (OnReaderType != null) { OnReaderType(this, new OnReaderCommonEventArgs { ReaderType = e.ReaderType }); }
}
}
用户使用示例:
rfid = new PUR_100U(20);
rfid.OnSerialNumber += rfid_OnSerialNumber;
rfid.OnReaderType += rfid_OnReaderType;
有更好的方法吗?
答案 0 :(得分:0)
我需要从另一个班级举起一个活动 - 我知道这是不可能的 - 但我需要一个解决方法。
这相当简单:
class Foo
{
public event EventHandler Fooed; //note, name is not OnFoo
public void FireFooed() => Fooed?.Invoke(this, new EventArgs);
}
现在,随意开火:
var foo = new Foo();
foo.FireFooed();
问题是,你为什么要这样做?这似乎是一个非常糟糕的主意。 Fooed
应仅触发,且仅当 Foo
内的前提条件才能触发时才会触发;如果您需要点击Fooed
,那么会让前提条件发生!
如果条件不满足,则随意点击Fooed
会破坏所有其他听众,不要那样做。