Apply custom binders

Requires: abstractions module.

This extension point covers scenarios where existing binders are not sufficient to handle required types.

Custom binders should be used as a last resort when constructor injection and parsing conventions are not powerful enough.

Creating a binder for a type is just a matter of implementing an interface:

class MyComplexTypeBinder : ISettingsBinder<MyComplexType>
{
    public MyComplexType Bind([CanBeNull] ISettingsNode node)
    {
        ...
    }
}

Custom binders can be applied to specific fields and properties or whole types:

class MySettings 
{
    [BindBy(typeof(MyComplexTypeBinder))]
    public MyComplexType ComplexProperty { get; }
}
[BindBy(typeof(MyComplexTypeBinder))]
class MyComplexType
{
}

Last updated