检查事件处理程序中的事件参数 C#

check event argument in event handler c#

我想跟踪在事件订阅的参数中传递的参数,以便我可以在 select/narrow 之后调用。

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 是否是该类型的正确名称 - 它 看起来 应该代表单个标签而不是一组标签标签,考虑到您的使用方式。)