• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# CallSite类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中CallSite的典型用法代码示例。如果您正苦于以下问题:C# CallSite类的具体用法?C# CallSite怎么用?C# CallSite使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



CallSite类属于命名空间,在下文中一共展示了CallSite类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: GetStandAloneSignature

 public MetadataToken GetStandAloneSignature(CallSite call_site)
 {
     var signature = metadata.GetCallSiteBlobIndex(call_site);
     var token = GetStandAloneSignatureToken(signature);
     call_site.MetadataToken = token;
     return token;
 }
开发者ID:beatcracker,项目名称:GUILess-Reflexil,代码行数:7,代码来源:CodeWriter.cs


示例2: Create

		public Instruction Create (OpCode opcode, CallSite site)
		{
			if (site == null)
				throw new ArgumentNullException ("site");
			if (opcode.Code != Code.Calli)
				throw new ArgumentException ("code");

			return FinalCreate (opcode, site);
		}
开发者ID:transformersprimeabcxyz,项目名称:monodevelop-1,代码行数:9,代码来源:CilWorker.cs


示例3: Invoke

        internal object Invoke(object[] args) {
            Debug.Assert(args != null);

            // If it is a delegate, just let DynamicInvoke do the binding.
            var d = _callable as Delegate;
            if (d != null) {
                return d.DynamicInvoke(args);
            }

            // Otherwise, create a CallSite and invoke it.
            if (_site == null) {
                _site = CallSite<Func<CallSite, object, object[], object>>.Create(SplatInvokeBinder.Instance);
            }

            return _site.Target(_site, _callable, args);
        }
开发者ID:KonajuGames,项目名称:SharpLang,代码行数:16,代码来源:SplatCallSite.cs


示例4: FunctionPointerEvaluator

        public FunctionPointerEvaluator(StackValue pointer, Interpreter dsi)
        {
            Validity.Assert(pointer.optype == AddressType.FunctionPointer);
            mRunTime = dsi;
            Core core = dsi.runtime.Core;

            int fptr = (int)pointer.opdata;
            ProtoCore.DSASM.FunctionPointerNode fptrNode;
            if (core.FunctionPointerTable.functionPointerDictionary.TryGetByFirst(fptr, out fptrNode))
            {
                int blockId = fptrNode.blockId;
                int procId = fptrNode.procId;
                mProcNode = dsi.runtime.exe.procedureTable[blockId].procList[procId];
            }

            mCallSite = new ProtoCore.CallSite(ProtoCore.DSASM.Constants.kGlobalScope, Name, core.FunctionTable, core.Options.ExecutionMode);
        }
开发者ID:Benglin,项目名称:designscript,代码行数:17,代码来源:FunctionPointerEvaluator.cs


示例5: FunctionPointerEvaluator

        public FunctionPointerEvaluator(StackValue pointer, Interpreter dsi)
        {
            Validity.Assert(pointer.IsFunctionPointer);
            interpreter = dsi;
            RuntimeCore runtimeCore = dsi.runtime.RuntimeCore;

            int fptr = (int)pointer.opdata;
            FunctionPointerNode fptrNode;
            int classScope = Constants.kGlobalScope;

            if (runtimeCore.DSExecutable.FuncPointerTable.functionPointerDictionary.TryGetByFirst(fptr, out fptrNode))
            {
                int blockId = fptrNode.blockId;
                int procId = fptrNode.procId;
                classScope = fptrNode.classScope;
                procNode = dsi.runtime.GetProcedureNode(blockId, classScope, procId);
            }

            callsite = new ProtoCore.CallSite(classScope, Name, interpreter.runtime.exe.FunctionTable, runtimeCore.Options.ExecutionMode);
        }
开发者ID:AutodeskFractal,项目名称:Dynamo,代码行数:20,代码来源:FunctionPointerEvaluator.cs


示例6: Action1

//		readonly CSharpBinderFlags flags;
//		List<CSharpArgumentInfo> argumentInfo;
//		Type callingContext;

		public static void Action1 (CallSite site, object o1)
		{
			((Delegate)o1).DynamicInvoke(null);
		}
开发者ID:robterrell,项目名称:playscript-mono,代码行数:8,代码来源:CSharpInvokeBinder.cs


示例7: Action2

		public static void Action2 (CallSite site, object o1, object o2)
		{
			((Delegate)o1).DynamicInvoke(new [] { o2 });
		}
开发者ID:robterrell,项目名称:playscript-mono,代码行数:4,代码来源:CSharpInvokeBinder.cs


示例8: FindMethodForType

		private MethodInfo FindMethodForType(CallSite site, System.Type otype, string name, bool isStatic, object[] args, out object[] outArgs)
		{
			BindingFlags bindingFlags = isStatic ? BindingFlags.Static | BindingFlags.FlattenHierarchy : BindingFlags.Instance;
			var methods = otype.GetMethods(BindingFlags.NonPublic | BindingFlags.Public | bindingFlags);
			var len = methods.Length;
			for (var mi = 0; mi < len; mi++) {
				var m = methods[mi];
				if ((m.IsStatic == isStatic) && m.Name == name) {
					// attempt to convert method parameters
					if (Dynamic.ConvertMethodParameters(m, args, out outArgs)) {
						return m;
					}
				}
			}

			// method not found
			outArgs = null;
			return null;
		}
开发者ID:rlfqudxo,项目名称:playscript-mono,代码行数:19,代码来源:CSharpInvokeMemberBinder.cs


示例9: InvokeAction7

		private static void InvokeAction7 (CallSite site, object o, object a1, object a2, object a3, object a4,
		                            object a5, object a6, object a7)
		{
			var binder = ((CSharpInvokeMemberBinder)site.Binder);
			var info = binder.invokeInfo;
			object[] args;
			if (info == null || !info.InvokeMatches(o, a1, a2, a3, a4, a5, a6, a7)) {
				binder.FindMethod (site, o, new [] { a1, a2, a3, a4, a5, a6, a7 });
				info = binder.invokeInfo;
				args = info.args;
			} else {
				args = info.args;
				args[0] = a1; args[1] = a2; args[2] = a3; args[3] = a4; args[4] = a5; args[5] = a6; args[6] = a7;
			}
			if (info.method != null) 
				info.method.Invoke (o, args);
			else 
				info.del.DynamicInvoke(null, args);
		}
开发者ID:rlfqudxo,项目名称:playscript-mono,代码行数:19,代码来源:CSharpInvokeMemberBinder.cs


示例10: Func2

		public static object Func2 (CallSite site, object o1, object o2)
		{
			return ((Delegate)o1).DynamicInvoke(new [] { o2 });
		}
开发者ID:robterrell,项目名称:playscript-mono,代码行数:4,代码来源:CSharpInvokeBinder.cs


示例11: Func7

		public static object Func7 (CallSite site, object o1, object o2, object o3, object o4, object o5, object o6, object o7)
		{
			return ((Delegate)o1).DynamicInvoke(new [] { o2, o3, o4, o5, o6, o7 });
		}
开发者ID:robterrell,项目名称:playscript-mono,代码行数:4,代码来源:CSharpInvokeBinder.cs


示例12: Func2

		public static object Func2 (CallSite site, object o1, object o2)
		{
			return InvokeConstructor((Type)o1, new [] { o2 });
		}
开发者ID:rlfqudxo,项目名称:playscript-mono,代码行数:4,代码来源:CSharpInvokeConstructorBinder.cs


示例13: Action10

		public static void Action10 (CallSite site, object o1, object o2, object o3, object o4, object o5, object o6, object o7, object o8, object o9, object o10)
		{
			((Delegate)o1).DynamicInvoke(new [] { o2, o3, o4, o5, o6, o7, o8, o10 });
		}
开发者ID:robterrell,项目名称:playscript-mono,代码行数:4,代码来源:CSharpInvokeBinder.cs


示例14: FindMethod

		public void FindMethod (CallSite site, object o, object[] args)
		{
			if (o == null) {
				throw new NullReferenceException ();
			}

			InvokeInfo info = this.invokeInfo;
			if (info == null) {
				info = new InvokeInfo();
				info.lastObj = new WeakReference (o);
				info.lastArgTypes = new Type[args.Length];
				this.invokeInfo = info;
			} else {
				this.invokeInfo.lastObj.Target = o;
			}

			var arg_len = args.Length;
			for (var i = 0; i < arg_len; i++) {
				info.lastArgTypes[i] = (args != null && args[i]!=null) ? args[i].GetType () : null;
			}

			if (o is ExpandoObject) {
				var expando = (ExpandoObject)o;
				// special case .hasOwnProperty here
				if (name == "hasOwnProperty")
				{
					info.method = o.GetType().GetMethod("hasOwnProperty");
					info.args = args;
					info.del = null;
					info.generation = 0;
				}
				else
				{
					object delObj;
					expando.TryGetValue(name, out delObj);
					Delegate del = delObj as Delegate;
					if (del == null) {
						throw new Exception ("No delegate found with the name '" + name + "'");
					}
					info.method = null;
					info.del = del;
					info.generation = expando.Generation;
				}
			} else {
				MethodInfo method = null;
				bool isStatic;
				System.Type otype;
				if (o is System.Type) {
					// this is a static method invocation where o is the class
					isStatic = true;
					otype = (System.Type)o;
				} else {
					// this is a non-static method invocation
					isStatic = false;
					otype = o.GetType();
				}

				// find method for type that matches argument list
				method = FindMethodForType(site, otype, name, isStatic, args, out info.args);
				if (method == null) {

					if (!isStatic) {
						// find extension methods
						method = FindExtensionMethodForType(site, otype, name, o, args, out info.args);
					}

					if (method == null) {
						throw new Exception("No matching method found for the type '" + otype.FullName + "' with the name '" + name + "'"); 
					}
				}
				info.method = method;
				info.del = null;
				info.generation = 0;
			}

		}
开发者ID:rlfqudxo,项目名称:playscript-mono,代码行数:76,代码来源:CSharpInvokeMemberBinder.cs


示例15: Func1

		public static object Func1 (CallSite site, object o1)
		{
			return InvokeConstructor((Type)o1, new object[] {});
		}
开发者ID:rlfqudxo,项目名称:playscript-mono,代码行数:4,代码来源:CSharpInvokeConstructorBinder.cs


示例16: InvokeFunc8

		private static object InvokeFunc8 (CallSite site, object o, object a1, object a2, object a3, object a4,
		                                   object a5, object a6, object a7, object a8)
		{
			var binder = ((CSharpInvokeMemberBinder)site.Binder);
			var info = binder.invokeInfo;
			object[] args;
			if (info == null || !info.InvokeMatches(o, a1, a2, a3, a4, a5, a6, a7, a8)) {
				binder.FindMethod (site, o, new [] { a1, a2, a3, a4, a5, a6, a7, a8 });
				info = binder.invokeInfo;
				args = info.args;
			} else {
				args = info.args;
				args[0] = a1; args[1] = a2; args[2] = a3; args[3] = a4; args[4] = a5; args[5] = a6; args[6] = a7; args[7] = a8;
			}			
			object ret;
			if (info.method != null) 
				ret = info.method.Invoke (o, args);
			else 
				ret = info.del.DynamicInvoke(null, args);
			return ret;
		}
开发者ID:rlfqudxo,项目名称:playscript-mono,代码行数:21,代码来源:CSharpInvokeMemberBinder.cs


示例17: InvokeFunc3

		private static object InvokeFunc3 (CallSite site, object o, object a1, object a2, object a3)
		{
			var binder = ((CSharpInvokeMemberBinder)site.Binder);
			var info = binder.invokeInfo;
			object[] args;
			if (info == null || !info.InvokeMatches(o, a1, a2, a3)) {
				binder.FindMethod (site, o, new [] { a1, a2, a3 });
				info = binder.invokeInfo;
				args = info.args;
			} else {
				args = info.args;
				args[0] = a1; args[1] = a2; args[2] = a3;
			}
			object ret;
			if (info.method != null) 
				ret = info.method.Invoke (o, args);
			else 
				ret = info.del.DynamicInvoke(null, args);
			return ret;
		}
开发者ID:rlfqudxo,项目名称:playscript-mono,代码行数:20,代码来源:CSharpInvokeMemberBinder.cs


示例18: InvokeFunc

		private static object InvokeFunc (CallSite site, object o)
		{
			var binder = ((CSharpInvokeMemberBinder)site.Binder);
			var info = binder.invokeInfo;
			object[] args;
			if (info == null || !info.InvokeMatches (o)) {
				binder.FindMethod (site, o, new object[] {});
				info = binder.invokeInfo;
			}
			args = info.args;
			if (info.method != null) 
				return info.method.Invoke (o, args);
			else 
				return info.del.DynamicInvoke(args);
		}
开发者ID:rlfqudxo,项目名称:playscript-mono,代码行数:15,代码来源:CSharpInvokeMemberBinder.cs


示例19: Action4

		public static void Action4 (CallSite site, object o1, object o2, object o3, object o4)
		{
			((Delegate)o1).DynamicInvoke(new [] { o2, o3, o4 });
		}
开发者ID:robterrell,项目名称:playscript-mono,代码行数:4,代码来源:CSharpInvokeBinder.cs


示例20: Func4

		public static object Func4 (CallSite site, object o1, object o2, object o3, object o4)
		{
			return InvokeConstructor((Type)o1, new [] { o2, o3, o4 });
		}
开发者ID:rlfqudxo,项目名称:playscript-mono,代码行数:4,代码来源:CSharpInvokeConstructorBinder.cs



注:本文中的CallSite类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# CallSiteStorage类代码示例发布时间:2022-05-24
下一篇:
C# CallSignature类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap