Tom*_*duy 17 c# dynamic c#-4.0 tryinvokemember
这是DynamicObject课程的一部分:
public class DynamicObject : IDynamicMetaObjectProvider
{
...
public virtual bool TryInvoke(InvokeBinder binder, object[] args, out object result)
{
result = (object) null;
return false;
}
...
public virtual bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
{
result = (object) null;
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
来自MSDN ::
TryInvoke提供调用对象
TryInvokeMember的操作的实现:为调用成员的操作提供实现
我想知道这两种方法之间的真正区别,因为它们具有几乎相同的语法和实现.我已经知道TryInvoke如果用于对象或委托,而TryInvokeMember用于方法,但为什么有两种方法呢?一个很好的例子将不胜感激.
shf*_*301 15
文档并不是很清楚,但TryInvoke和TryInvokeMember的示例 显示了不同之处. TryInvoke在调用对象时调用(即将其视为委托),并TryInvokeMember在调用对象上的方法时使用.
以下示例源自MSDN示例:
dynamic number;
....
// Invoking an object.
// The TryInvoke method is called.
number(2, "Two");
// Calling a method
// The TryInvokeMember method is called.
number.Clear();
Run Code Online (Sandbox Code Playgroud)
您显示的实现是相同的,因为它们都是null实现.返回false意味着未实现尝试调用的方法.
如果存在非null实现,则差异将是TryInvokeMember检查binder.Name属性以确定将调用哪个方法,而不会设置该方法TryInvoke.
| 归档时间: |
|
| 查看次数: |
1813 次 |
| 最近记录: |