本文整理汇总了C#中Mono.Debugger.Frontend.ScriptingContext.RuntimeInvoke方法的典型用法代码示例。如果您正苦于以下问题:C# ScriptingContext.RuntimeInvoke方法的具体用法?C# ScriptingContext.RuntimeInvoke怎么用?C# ScriptingContext.RuntimeInvoke使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mono.Debugger.Frontend.ScriptingContext
的用法示例。
在下文中一共展示了ScriptingContext.RuntimeInvoke方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetProperty
protected TargetObject GetProperty(ScriptingContext context,
TargetPropertyInfo prop)
{
RuntimeInvokeFlags flags = context.GetRuntimeInvokeFlags ();
RuntimeInvokeResult result = context.RuntimeInvoke (
context.CurrentThread, prop.Getter, InstanceObject,
new TargetObject [0], flags);
if (result.ExceptionMessage != null)
throw new ScriptingException (
"Invocation of `{0}' raised an exception: {1}",
Name, result.ExceptionMessage);
return result.ReturnObject;
}
示例2: SetProperty
protected void SetProperty(ScriptingContext context, TargetPropertyInfo prop,
TargetObject obj)
{
ResolveClass (context.CurrentThread);
if (prop.Setter == null)
throw new ScriptingException ("Property `{0}' has no setter.", Name);
RuntimeInvokeFlags flags = context.GetRuntimeInvokeFlags ();
RuntimeInvokeResult result = context.RuntimeInvoke (
context.CurrentThread, prop.Setter, InstanceObject,
new TargetObject [] { obj }, flags);
if (result.ExceptionMessage != null)
throw new ScriptingException (
"Invocation of `{0}' raised an exception: {1}",
Name, result.ExceptionMessage);
}
示例3: DoInvoke
protected TargetObject DoInvoke(ScriptingContext context, bool debug)
{
TargetObject[] args = new TargetObject [arguments.Length];
for (int i = 0; i < arguments.Length; i++)
args [i] = arguments [i].EvaluateObject (context);
TargetMethodSignature sig = method.GetSignature (context.CurrentThread);
TargetObject[] objs = new TargetObject [args.Length];
for (int i = 0; i < args.Length; i++) {
objs [i] = Convert.ImplicitConversionRequired (
context, args [i], sig.ParameterTypes [i]);
}
TargetStructObject instance = method_expr.InstanceObject;
if (!method.IsStatic && !method.IsConstructor && (instance == null))
throw new ScriptingException (
"Cannot invoke instance method `{0}' with a type reference.",
method.FullName);
try {
Thread thread = context.CurrentThread;
RuntimeInvokeResult result;
RuntimeInvokeFlags flags = context.GetRuntimeInvokeFlags ();
if (debug)
flags |= RuntimeInvokeFlags.BreakOnEntry | RuntimeInvokeFlags.SendEventOnCompletion |
RuntimeInvokeFlags.NestedBreakStates;
result = context.RuntimeInvoke (thread, method, instance, objs, flags);
if (result == null)
throw new ScriptingException (
"Invocation of `{0}' aborted abnormally.", Name);
if (result.ExceptionMessage != null)
throw new InvocationException (Name, result.ExceptionMessage, result.ReturnObject);
return result.ReturnObject;
} catch (TargetException ex) {
throw new ScriptingException (
"Invocation of `{0}' raised an exception: {1}", Name, ex.Message);
} catch (EvaluationTimeoutException ex) {
throw new ScriptingException ("Invocation of `{0}' timed out.", Name);
}
}