public object Invoke(ThreadContext context, object _this, object[] _params, bool bVisual) { if (EmptyBody) { return(null); } if (context == null) { context = ThreadContext.activeContext; } if (context == null) { throw new Exception("这个线程上没有CLRSharp:ThreadContext"); } if (bVisual && method_CLRSharp.IsVirtual) { CLRSharp_Instance inst = _this as CLRSharp_Instance; if (inst.type != this.DeclaringType) { IMethod impl = inst.type.GetVMethod(this);// .GetMethod(this.Name, this.ParamList); if (impl != this) { return(impl.Invoke(context, _this, _params)); } } } if (method_CLRSharp.Name == ".ctor") { CLRSharp_Instance inst = _this as CLRSharp_Instance; if (inst == null) { inst = new CLRSharp_Instance(_DeclaringType); } //if (_DeclaringType.BaseType is ICLRType_System) context.ExecuteFunc(this, inst, _params); return(inst); } var obj = context.ExecuteFunc(this, _this, _params); if (obj is CLRSharp_Instance && ReturnType is ICLRType_System) { var bind = context.environment.GetCrossBind((ReturnType as ICLRType_System).TypeForSystem); if (bind != null) { obj = bind.CreateBind(obj as CLRSharp_Instance); } } return(obj); }
public object Invoke(ThreadContext context, object _this, object[] _params) { if (context == null) { context = ThreadContext.activeContext; } if (context == null) { throw new Exception("这个线程上没有CLRSharp:ThreadContext"); } if (method_CLRSharp.Name == ".ctor") { CLRSharp_Instance inst = new CLRSharp_Instance(_DeclaringType); context.ExecuteFunc(method_CLRSharp, inst, _params); return(inst); } return(context.ExecuteFunc(method_CLRSharp, _this, _params)); }
public object Invoke(ThreadContext context, object _this, object[] _params, bool bVisual) { if (context == null) { context = ThreadContext.activeContext; } if (context == null) { throw new Exception("这个线程上没有CLRSharp:ThreadContext"); } if (bVisual && method_CLRSharp.IsVirtual) { CLRSharp_Instance inst = _this as CLRSharp_Instance; if (inst.type != this.DeclaringType) { IMethod impl = inst.type.GetVMethod(this);// .GetMethod(this.Name, this.ParamList); if (impl != this) { return(impl.Invoke(context, _this, _params)); } } } if (method_CLRSharp.Name == ".ctor") { CLRSharp_Instance inst = _this as CLRSharp_Instance; if (inst == null) { inst = new CLRSharp_Instance(_DeclaringType); } //if (_DeclaringType.BaseType is ICLRType_System) context.ExecuteFunc(this, inst, _params); return(inst); } return(context.ExecuteFunc(this, _this, _params)); }
public object Invoke(ThreadContext context, object _this, object[] _params, bool bVisual) { if (context == null) context = ThreadContext.activeContext; if (context == null) throw new Exception("这个线程上没有CLRSharp:ThreadContext"); if (bVisual && method_CLRSharp.IsVirtual) { CLRSharp_Instance inst = _this as CLRSharp_Instance; if (inst.type != this.DeclaringType) { IMethod impl = inst.type.GetVMethod(this);// .GetMethod(this.Name, this.ParamList); if (impl != this) { return impl.Invoke(context, _this, _params); } } } if (method_CLRSharp.Name == ".ctor") { CLRSharp_Instance inst = _this as CLRSharp_Instance; if (inst == null) inst = new CLRSharp_Instance(_DeclaringType); //if (_DeclaringType.BaseType is ICLRType_System) context.ExecuteFunc(this, inst, _params); return inst; } var obj = context.ExecuteFunc(this, _this, _params); if (obj is CLRSharp_Instance && ReturnType is ICLRType_System) { var bind = context.environment.GetCrossBind((ReturnType as ICLRType_System).TypeForSystem); if (bind != null) { obj = bind.CreateBind(obj as CLRSharp_Instance); } } return obj; }
public object Invoke(ThreadContext context, object _this, object[] _params, bool bVisual) { if (context == null) context = ThreadContext.activeContext; if (context == null) throw new Exception("这个线程上没有CLRSharp:ThreadContext"); if (bVisual && method_CLRSharp.IsVirtual) { CLRSharp_Instance inst = _this as CLRSharp_Instance; if (inst.type != this.DeclaringType) { IMethod impl = inst.type.GetVMethod(this);// .GetMethod(this.Name, this.ParamList); if (impl != this) { return impl.Invoke(context, _this, _params); } } } if (method_CLRSharp.Name == ".ctor") { CLRSharp_Instance inst = _this as CLRSharp_Instance; if (inst == null) inst = new CLRSharp_Instance(_DeclaringType); //if (_DeclaringType.BaseType is ICLRType_System) context.ExecuteFunc(this, inst, _params); return inst; } return context.ExecuteFunc(this, _this, _params); }
public object Invoke(ThreadContext context, object _this, object[] _params, bool bVisual) { bool flag = context == null; if (flag) { context = ThreadContext.activeContext; } bool flag2 = context == null; if (flag2) { throw new Exception("这个线程上没有CLRSharp:ThreadContext"); } bool flag3 = bVisual && this.method_CLRSharp.IsVirtual; object result; if (flag3) { CLRSharp_Instance cLRSharp_Instance = _this as CLRSharp_Instance; bool flag4 = cLRSharp_Instance.type != this.DeclaringType; if (flag4) { IMethod vMethod = cLRSharp_Instance.type.GetVMethod(this); bool flag5 = vMethod != this; if (flag5) { result = vMethod.Invoke(context, _this, _params); return(result); } } } bool flag6 = this.method_CLRSharp.Name == ".ctor"; if (flag6) { CLRSharp_Instance cLRSharp_Instance2 = _this as CLRSharp_Instance; bool flag7 = cLRSharp_Instance2 == null; if (flag7) { cLRSharp_Instance2 = new CLRSharp_Instance(this._DeclaringType); } context.ExecuteFunc(this, cLRSharp_Instance2, _params); result = cLRSharp_Instance2; } else { object obj = context.ExecuteFunc(this, _this, _params); bool flag8 = obj is CLRSharp_Instance && this.ReturnType is ICLRType_System; if (flag8) { ICrossBind crossBind = context.environment.GetCrossBind((this.ReturnType as ICLRType_System).TypeForSystem); bool flag9 = crossBind != null; if (flag9) { obj = crossBind.CreateBind(obj as CLRSharp_Instance); } } result = obj; } return(result); }