【问题标题】:Implementing dynamic capabilities on an object without inheriting DynamicObject?在不继承 DynamicObject 的情况下在对象上实现动态功能?
【发布时间】:2011-02-22 14:18:56
【问题描述】:

现在我有一个扩展 DynamicObject 并覆盖 TryGetMember 的类。

public class FieldCollection : DynamicObject, ICollection<Field>, ISerializable
{
    ...

    public override bool TryGetMember(GetMemberBinder binder, out object result)
    {
        var field = _inner.TryGetField(binder.Name);

        result = field == null ? null : field.Value;
        return true;
    }

    ...
}

dynamic fields = new FieldCollection();
Console.WriteLine(fields.Foo);

这很好用,但我不得不扩展 DynamicObject,这意味着我无法扩展其他任何东西。是否可以在不扩展 DynamicObject 的情况下做到这一点?

【问题讨论】:

    标签: c# .net inheritance dynamic


    【解决方案1】:

    您可以自己实现IDynamicMetaObjectProvider。我是a lot more work

    【讨论】:

      【解决方案2】:

      您可以将重复的 SO 问题委托给孩子 DynamicObject,例如 this answer(从 @Lee 的回答开始,但需要完成额外的工作)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-22
        • 2012-12-10
        • 1970-01-01
        • 1970-01-01
        • 2012-08-15
        • 1970-01-01
        相关资源
        最近更新 更多