如何将成员添加到活动

问题描述 投票:0回答:1

我必须连接到这样的活动。

for (int iii = 1; iii <= pcdApplication.Machines.Count; iii++)
{
    Machine machine = pcdApplication.Machines.Item(iii);
    machineList.Add(machine);
    machine.ErrorMsg += Machine_ErrorMsg;
}

连接的事件如下:

private void Machine_ErrorMsg(string Msg, int ErrorType)
{
    ... 
}

所以在这里我没有指示我需要知道其属性的发送机器是什么。

谢谢

帕特里克

c# events event-handling
1个回答
0
投票

我认为你唯一能做的就是使用 lambda 而不是命名方法,例如

for (int iii = 1; iii <= pcdApplication.Machines.Count; iii++)
{
    Machine machine = pcdApplication.Machines.Item(iii);
    machineList.Add(machine);
    machine.ErrorMsg += (Msg, ErrorType) =>
                        {
                            Console.WriteLine(machine.Name);

                            // ...
                        };
}

lambda 可以访问当前上下文中的变量,而命名方法则不能。

© www.soinside.com 2019 - 2024. All rights reserved.