当前位置: 首页>>代码示例>>C#>>正文


C# ObjectInfo.GetDelegateValue方法代码示例

本文整理汇总了C#中ObjectInfo.GetDelegateValue方法的典型用法代码示例。如果您正苦于以下问题:C# ObjectInfo.GetDelegateValue方法的具体用法?C# ObjectInfo.GetDelegateValue怎么用?C# ObjectInfo.GetDelegateValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ObjectInfo的用法示例。


在下文中一共展示了ObjectInfo.GetDelegateValue方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: EvalMethodCallExpression

		/////////////////////////////////////////////////////////////////////////////

		//public override object EvalMethodCallExpression( object objIn, MethodCallExpression exp )
		//{
		//	// ******
		//	//
		//	// expression:  macro.method(..)
		//	//
		//	// exp.MemberName should be a method on the object passed in to us, it is the
		//	// method that we need to retreive and then invoke
		//	//
		//	object objResult = null;
		//	object [] args = EvaluateArguments( exp.Arguments );
		//	
		//	// ******
		//	Invoker invoker = Invokers.GetMethodInvoker( objIn, exp.MethodName );
		//	if( null != invoker ) {
		//		objResult = invoker.Invoke( args );
		//	}
		//	else {
		//		//
		//		// could be a "raw" delegate
		//		//
		//		var oInfo = new ObjectInfo( objIn, exp.MethodName );
		//		if( oInfo.IsDelegate ) {
		//			objResult = oInfo.GetDelegateValue( args );
		//		}
		//		else {
		//			ThreadContext.MacroError( "there is no method or delegate named \"{0}\" on the object type \"{1}\"", exp.MethodName, ObjectInfo.GetTypeName(objIn) );
		//		}
		//	}
		//
		//	// ******
		//	CheckNullResult( objResult, objIn, exp.MethodName );
		//	return objResult;
		//}


		public override object EvalMethodCallExpression( object objIn, MethodCallExpression exp )
		{
			// ******
			//
			// expression:  macro.method(..)
			//
			// exp.MemberName should be a method on the object passed in to us, it is the
			// method that we need to retreive and then invoke
			//
			object objResult = null;
			object [] args = EvaluateArguments( exp.Arguments );
			
			// ******
			//Invoker invoker = Invokers.GetMethodInvoker( objIn, exp.MethodName );
			Invoker invoker = Invokers.GetMethodInvoker( objIn, exp.MethodName, typeHelpers );
			if( null != invoker ) {
				objResult = invoker.Invoke( args );
			}
			else {
				//
				// could be a "raw" delegate
				//
				var oInfo = new ObjectInfo( objIn, exp.MethodName );
				if( oInfo.IsDelegate ) {
					objResult = oInfo.GetDelegateValue( args );
				}
				else {
					ThreadContext.MacroError( "there is no method or delegate named \"{0}\" on the object type \"{1}\"", exp.MethodName, ObjectInfo.GetTypeName(objIn) );
				}
			}

			// ******
			CheckNullResult( objResult, objIn, exp.MethodName );
			return objResult;
		}
开发者ID:jmclain,项目名称:Nmp,代码行数:73,代码来源:ExpressionEvaluator.cs


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