本文整理汇总了C#中Lens.Compiler.Context.ResolveIndexer方法的典型用法代码示例。如果您正苦于以下问题:C# Context.ResolveIndexer方法的具体用法?C# Context.ResolveIndexer怎么用?C# Context.ResolveIndexer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Lens.Compiler.Context
的用法示例。
在下文中一共展示了Context.ResolveIndexer方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: compileCustom
private void compileCustom(Context ctx)
{
var gen = ctx.CurrentILGenerator;
var exprType = Expression.GetExpressionType(ctx);
var idxType = Index.GetExpressionType(ctx);
try
{
var pty = ctx.ResolveIndexer(exprType, idxType, false);
var idxDest = pty.ArgumentTypes[0];
var valDest = pty.ArgumentTypes[1];
Expression.Compile(ctx, true);
Expr.Cast(Index, idxDest).Compile(ctx, true);
Expr.Cast(Value, valDest).Compile(ctx, true);
gen.EmitCall(pty.MethodInfo);
}
catch (LensCompilerException ex)
{
ex.BindToLocation(this);
throw;
}
}
示例2: resolveExpressionType
protected override Type resolveExpressionType(Context ctx, bool mustReturn = true)
{
var exprType = Expression.GetExpressionType(ctx);
if (exprType.IsArray)
return exprType.GetElementType();
var idxType = Index.GetExpressionType(ctx);
try
{
m_Getter = ctx.ResolveIndexer(exprType, idxType, true);
return m_Getter.ReturnType;
}
catch (LensCompilerException ex)
{
ex.BindToLocation(this);
throw;
}
}