我对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]
而不必像这样包装整件事