【发布时间】:2012-11-13 18:43:36
【问题描述】:
我正在实施DynamicObject。在TryInvokeMethod 中,除了参数(传递给方法)之外,我还需要参数的名称(如果已使用)。
我可以看到binder.CallInfo.ArgumentNames 确实提供了名称,但我无法将它们与值相关联。有没有办法这样做,还是我希望反对:
public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
{
var names = binder.CallInfo.ArgumentNames;
foreach (var arg in args)
{
arguments.Add(new Argument(arg));
}
//I need to associate the names and the args
result = this;
return true;
}
例如,如果我拨打如下电话:
myDynamicObject.DynamicInvoke("test", something: "test2")
我有test 和test2,还有something,但我无法获得something 是test2 的名称和test 没有名称的信息。
【问题讨论】:
-
您应该假设最后一个参数名称(如果有)对应于最后一个方法参数,依此类推。
-
@user629926 感谢您的指点。我用它来获取下面的代码。如果您愿意,您仍然可以添加为答案,我会接受。
标签: c# dynamic dynamicobject tryinvokemember