本文整理汇总了C#中ParseResult.Select方法的典型用法代码示例。如果您正苦于以下问题:C# ParseResult.Select方法的具体用法?C# ParseResult.Select怎么用?C# ParseResult.Select使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ParseResult
的用法示例。
在下文中一共展示了ParseResult.Select方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ReadValue
private static object ReadValue(Domain domain, ParseResult result)
{
switch (result.Parser.Name) {
case "Null": return null;
case "Boolean": return bool.Parse(result.Value);
case "Vector": return ParseVector(domain, result[0]);
case "Float": return float.Parse(result[0].Value);
case "Double": return double.Parse(result[0].Value);
case "Integer": return int.Parse(result.Value);
case "Hex Integer": return uint.Parse(result.Value, NumberStyles.HexNumber);
case "String": return new string(result.Select(x => ParseChar(x)).ToArray());
case "Location": return FindMember(domain, result).GetValue();
default:
throw new Exception("This should not occur - parser grammar is incorrect");
}
}
示例2: FindMember
public Member FindMember(Domain domain, ParseResult result)
{
var context = GetValue();
var type = GetContextType(context);
switch (result.Parser.Name) {
case "Member Access":
var name = result[0].Value;
foreach (var member in GetMembers(type).Where(x => x.Name == name)) {
var field = member as FieldInfo;
if (field != null) return new Field(field, context);
var prop = member as PropertyInfo;
if (prop != null) return new Property(prop, context);
var method = member as MethodInfo;
if (method != null) return new Method(method, context);
}
throw new Exception(string.Format("Could not find {2} member '{0}' in type '{1}'",
name, type.FullName, context == null ? "static" : "instance"));
case "Component Access":
var componentName = result[0].Value;
return new Component(componentName, context);
case "Invocation":
// ReSharper disable once ConvertClosureToMethodGroup
var values = result.Select(x => ReadValue(domain, x)).ToArray();
return new Invocation(values, this);
default:
throw new Exception("This should not occur - parser grammar is incorrect");
}
}
示例3: ParseVector
private static object ParseVector(Domain domain, ParseResult result)
{
var values = result.Select(x => Convert.ToSingle(ReadValue(domain, x))).ToArray();
switch (result.ChildCount) {
case 2: return new Vector2(values[0], values[1]);
case 3: return new Vector3(values[0], values[1], values[2]);
case 4: return new Vector4(values[0], values[1], values[2], values[3]);
default: throw new Exception("Failed to parse Vector - bad number of arguments");
}
}