【发布时间】:2015-04-06 20:41:17
【问题描述】:
我有一个自定义动态对象,它在内部只是一个字典,但允许访问它的值,就好像它们是编译时属性一样。
它(或多或少)就是这样:
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()的吗? -
另外,
Count不是IEnumerable上的方法 - 它是一种扩展方法,编译器会将其转换为对静态方法Enumerable.Count的调用。
标签: c# .net reflection types expandoobject