Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Implementing dynamic capabilities on an object without inheriting DynamicObject?

Right now I have a class that extends DynamicObject and overrides 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);

This works fine, but I'm forced to extend DynamicObject which means I can't extend anything else. Is it possible to do do this without extending DynamicObject?

like image 969
Allrameest Avatar asked Feb 05 '26 08:02

Allrameest


1 Answers

You can implement IDynamicMetaObjectProvider yourself. It's a lot more work.

like image 161
Stephen Cleary Avatar answered Feb 07 '26 20:02

Stephen Cleary