本文整理匯總了C#中Mono.CSharp.ArrayCreation.Resolve方法的典型用法代碼示例。如果您正苦於以下問題:C# ArrayCreation.Resolve方法的具體用法?C# ArrayCreation.Resolve怎麽用?C# ArrayCreation.Resolve使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類Mono.CSharp.ArrayCreation
的用法示例。
在下文中一共展示了ArrayCreation.Resolve方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。
示例1: DoResolve
protected override Expression DoResolve (ResolveContext ec)
{
if (ec.Target == Target.JavaScript) {
type = ec.BuiltinTypes.Dynamic;
eclass = ExprClass.Value;
return this;
}
if (Expr is AsArrayInitializer)
return Expr.Resolve (ec);
New newExpr = null;
if (Expr is Invocation) {
var inv = Expr as Invocation;
newExpr = new New(inv.Exp, inv.Arguments, loc);
} else if (Expr is ElementAccess) {
if (loc.SourceFile != null && !loc.SourceFile.PsExtended) {
ec.Report.Error (7103, loc, "Native arrays are only suppored in ASX.'");
return null;
}
var elemAcc = Expr as ElementAccess;
var exprList = new List<Expression>();
foreach (var arg in elemAcc.Arguments) {
exprList.Add (arg.Expr);
}
// TODO: Handle jagged arrays
var arrayCreate = new ArrayCreation ((FullNamedExpression) elemAcc.Expr, exprList,
new ComposedTypeSpecifier (exprList.Count, loc), null, loc);
return arrayCreate.Resolve (ec);
} else {
var resolveExpr = Expr.Resolve (ec);
if (resolveExpr == null)
return null;
if (resolveExpr is TypeOf) {
newExpr = new New (((TypeOf)resolveExpr).TypeExpression, new Arguments (0), loc);
} else {
newExpr = new New (resolveExpr, new Arguments (0), loc);
}
}
return newExpr.Resolve (ec);
}