问题描述
我想跟踪在事件订阅中传入参数的参数,以便在选择/缩小我的调用之后。
public List<Tags> _toSpecificTagSubscribed = new List<Tags>();
private event Action<Tags> _onSpecificTagEvent;
public event Action<Tags> OnSpecificTagEvent {
add {
_onSpecificTagCollision += value;
if (!_toSpecificTagSubscribed.Contains(<TagArgumentValue>))
_toSpecificTagSubscribed.Add(<TagArgumentValue>);
}
remove { _onSpecificTagEvent -= value; }
}
}
参见<TagArgumentValue>
。这是在订阅的事件本身中传递的,所以我想知道如何访问它。可能是 value.<TagArgumentValue>
,表示传递给事件的参数值。
这可能吗?怎么样?
解决方法
如果我理解正确,您会将“引发事件时提供的信息”与“事件处理程序中提供的信息”混淆。
Action<Tags>
可以使用它提供的 Tags
做任何事情。它可能选择只响应某些标签,但这只是任意代码。
如果您想拥有一种仅订阅特定标签的方式,您需要将其作为订阅信息的一部分,例如
public void AddTagHandler(Tags tag,Action<Tags> handler)
您可以潜在地使用 Dictionary<Tags,Action<Tags>>
来跟踪为任何给定标记订阅的处理程序。
(您可能还想检查 Tags
是否是该类型的正确名称 - 它看起来应该代表单个标签而不是标签集合,考虑到您的方式正在使用它。)