本文整理汇总了C#中Scope.GetOrCreate方法的典型用法代码示例。如果您正苦于以下问题:C# Scope.GetOrCreate方法的具体用法?C# Scope.GetOrCreate怎么用?C# Scope.GetOrCreate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Scope
的用法示例。
在下文中一共展示了Scope.GetOrCreate方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AddDeclarationsFromAssignments
private static void AddDeclarationsFromAssignments(Block block, Scope scope)
{
var variables = block.Expressions.OfType<Assign>().Select(assign => assign.Variable as Value).Where(v => !v.HasProperties);
foreach (var name in CompileToNames(variables))
scope.GetOrCreate(VariableType.Variable, name);
}
示例2: CompileCode
public static Expression CompileCode(Code code, Scope scope)
{
var block = code.Body as Block;
scope = new Scope(scope, block, code, scope.Runtime);
var parameters = new List<ParameterExpression>();
var funcArgs = new List<Type> { typeof(object) };
foreach (var name in CompileToNames(code.Parameters))
{
parameters.Add(scope.GetOrCreate(VariableType.Parameter, name));
funcArgs.Add(typeof(object));
}
AddDeclarationsFromAssignments(block, scope);
var body = Compile(code.Body, scope);
Helper.IsTrue(string.IsNullOrEmpty(code.Name));
return Expression.Lambda(Expression.GetFuncType(funcArgs.ToArray()), body, code.Name, parameters);
}