我有一个自定义动态对象,它在内部只是一个字典,但允许访问它的值,就好像它们是编译时属性一样。
它(或多或少)就是这样:
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;
}
...
设置和获取&#39;属性&#39;工作正常,但由于我的对象在技术上实现IEnumerable<'1>
,我想在其上调用IEnumerable<'1>
的方法。
然而,无论何时我打电话,例如Count()
,TryGetMember
被调用,这当然没有意义:
The key 'Count()' was not present in the dictionary.
有没有办法解决这个问题?
答案 0 :(得分:0)
简单地说,您不能使用普通语法对动态对象使用扩展方法。你可以使用Enumerable.Count(dummyInstance);
,但我怀疑这是你想要的。
有关详细信息,请参阅[Extension method and dynamic object。