按名称返回值的类

时间:2015-08-17 23:59:18

标签: c#

我对C#完全陌生,我在理解如何实现这一目标时遇到了一些问题。

我有这个类为UI下拉节点创建数据绑定。我还没写过这个。我只想尝试进入它。

public override IEnumerable<AssociativeNode> BuildOutputAst(List<AssociativeNode> inputAstNodes)
{
    if (Items.Count == 0 ||
        Items[0].Name == NO_FAMILY_TYPES ||
        SelectedIndex == -1)
    {
        return new[] { AstFactory.BuildAssignment(GetAstIdentifierForOutputIndex(0), AstFactory.BuildNullNode()) };
    }

    var args = new List<AssociativeNode>
    {
        AstFactory.BuildStringNode(((string) Items[SelectedIndex].Name).ToString())
    };

    var func = new Func<string, int>(Data.byName);
    var functionCall = AstFactory.BuildFunctionCall(func, args);

    return new[] { AstFactory.BuildAssignment(GetAstIdentifierForOutputIndex(0), functionCall) };
}

当我创建一个新的func变量时,问题就出现了。 Data.byName应该通过键名返回一段数据。为此,我使用了这样的词典:

public class Data
{
    public string sProcessName { get; set; }
    public Dictionary<string, int> dOffsets { get; set; }

    public Data()
    {
        sProcessName = "Client";

        Dictionary<string, int> dOffsets = new Dictionary<string, int>()
        {
            {"Left", 11},
            {"Center", 22},
            {"Right", 33}
        };
    }

    public static int byName(string name)
    {
        if (name == null)
        {
            throw new ArgumentException("name");
        }
        int intValue = new Data().dOffsets[name];
        return intValue;
    }
}

这个Data()类位于一个单独的DLL中,但我的想法是调用Data.byName("Left")并返回int 11。

这个byName定义是否需要?我很好奇,如果我可以使用Data().dOffsets[name]而不必像这样包装整件事

0 个答案:

没有答案