我有一个自定义的动态对象,它在内部只是一个字典,但允许访问它的值,就好像它们是编译时间属性一样。动态对象调用方法成员访问TryGetMember
它(或多或少)只是这样的:
public class Dummy : DynamicObject, IEnumerable<KeyValuePair<string, object>>
{
private readonly Dictionary<string, object> _values...
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
result = _values[binder.Name];
return true;
}
...
设置和获取“属性”优良工程,但因为我的目标在技术上实现了IEnumerable<'1>
,我想呼吁从IEnumerable<'1>
方法。
但是,每当我打电话给Count()
,TryGetMember
被调用这当然是没有意义的:
The key 'Count()' was not present in the dictionary.
有没有办法来解决这个问题?
我无法复制您的问题。你能告诉你如何调用Count()吗? – 2015-02-06 16:32:51
此外,'Count'不是'IEnumerable'上的方法 - 它是一个_extension方法,编译器将其转换为对静态方法“Enumerable.Count”的调用。 – 2015-02-06 16:33:48