指定委托参数的类型

specify type of delegate parameter

我正在尝试使用 TryGetValue

Method 中调用委托 我使用字典来 select 一个委托然后调用它。

字典类型是

Dictionary<string, Action<Mesh>> _meshActions;

并且动作类型是

Action<Mesh>

所以这里我似乎无法在委托参数中正确声明 action

        Method(null, "mesh", ( action => //How to specify type of action
        {
            _meshActions.TryGetValue(_reader.LocalName, out action);

            try { action(mesh); }
            catch 
            {
                //do nothing 
            }
        }));

编译器期望 outAction<Mesh> 的类型,但我如何设置 action 类型?

在使用TryGetValue之前我通常使用字典

但因为有时我会收到 Key not found 的错误,所以我决定使用 TryGetValue

这是没有 TryGetValue 的代码,如果所有键都找到,则可以正常工作。

Method(null, "mesh", () => _meshActions[_reader.LocalName](mesh));

编辑:请注意 action 不是委托之外的任何东西。我只想在 TryGetValue 中发送参数并使用它的结果。

这里是 Method

    private static void Method(string enterElement, string exitElement, Action loadElement)
    {
        while (_reader.Read())
        {
            if (StateElement(State.Enter, enterElement))
            {
                loadElement.Invoke();
            }
            else if (StateElement(State.Exit, exitElement))
            {
                return;
            }
        }
    }

action需要在委托中局部声明,不能作为参数。

    Method(null, "mesh", ( () => //How to specify type of action
    {
        Action<Mesh> action;
        _meshActions.TryGetValue(_reader.LocalName, out action);

        try { action(mesh); }
        catch 
        {
            //do nothing 
        }
    }));