指定委托参数的类型

本文关键字:类型 参数 | 更新日期: 2023-09-27 17:55:29

>im 尝试使用 TryGetValue .

在里面调用一个委托Method我使用字典选择一个委托,然后调用它。

字典类型为

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 
            }
        }));

编译器希望out类型Action<Mesh>但如何设置action类型?

在使用TryGetValue之前,我正常使用字典

但是因为有时我找不到Key的错误,所以我决定使用TryGetValue

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

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

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

这是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 
        }
    }));