本文整理汇总了C#中IExpression.Select方法的典型用法代码示例。如果您正苦于以下问题:C# IExpression.Select方法的具体用法?C# IExpression.Select怎么用?C# IExpression.Select使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IExpression
的用法示例。
在下文中一共展示了IExpression.Select方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ExpressionTest
public void ExpressionTest(int row, int column)
{
var expressions = new IExpression[]
{
new ConstantExpression(0),
new CellRefereceExpression(new CellAddress(1, 1)),
new BinaryExpression(new ConstantExpression(1), OperatorManager.Default.Operators['*'],
new ConstantExpression(2)),
new UnaryExpression(OperatorManager.Default.Operators['-'], new ConstantExpression(9)),
new ConstantExpression(91),
new ConstantExpression("text"),
};
var cells = expressions.Select((e, i) => new Cell(new CellAddress(i / column, i % column), e)).ToArray();
var spreadsheet = ReadSpreadsheet($"{row} {column}", expressions);
Assert.AreEqual(row, spreadsheet.RowCount, "Wrong row count");
Assert.AreEqual(column, spreadsheet.ColumnCount, "Wrong column count");
var array = spreadsheet.ToArray();
Assert.AreEqual(row * column, array.Length, "Wrong container size");
CollectionAssert.AreEqual(cells.Take(array.Length),
array,
new GenericComparer<Cell>((x,y) => string.Compare(x.ToString(), y.ToString(), StringComparison.Ordinal)));
}
示例2: Invoke
public override Task<object> Invoke(IExpression head, IExpression[] args)
{
var memberName = "";
if (head is IStringLiteral)
{
memberName = (head as IStringLiteral).Value;
}
var methods = _obj.GetType().GetMethods().Where(m => m.Name == memberName);
if (methods.Any())
{
var evaluatedArgs = args.Select(a => a.Eval(Parent)).ToArray();
foreach (var method in methods)
{
try
{
var res = method.Invoke(_obj, evaluatedArgs);
return Task.FromResult(res);
}
catch
{
}
}
}
var properties = _obj.GetType().GetProperties().Where(m => m.Name == memberName);
foreach (var property in properties)
{
try
{
var m = property.GetGetMethod().Invoke(_obj, null) as PlasticMacro;
var res = m(this, args);
return res;
}
catch
{
}
}
throw new Exception("No matching method found.");
}