本文整理汇总了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;
}