IResolver
This interface is used to mark a class to be a resolver object. This interface accepts upto the maximum 7 input generic types and 1 output generic type.
In each number of inputted generic types, a method named Resolve is given.
Use-Cases
This interface is used internally by the library, specially in the BaseStatementBuilder.
Or, you can use it on a situation like:
- Handling the transformation of the column based on the database settings.
- Handling the way on how to correct the inputted value.
The use-case can be unlimitted based your situation.
How to Implement?
You have to manually create a class that implements this interface.
public class ColumnNameResolver : IResolver<string, IDbSetting, string>
{
    public string Resolve(string input, IDbSetting setting)
    {
        return input?.AsField(setting);
    }
}
Usability
Then, you can always use it like this.
var setting = DbSettingMapper.Get(typeof(SqlConnection));
var resolver = new ColumnNameResolver();
var fieldName = "Id";
var column = resolver.Resolve(fieldName, setting);
// The value of column would be '[Id]', instead of 'Id'
Or, you can pass it on your custom Statement Builder.
public class OptimizedSqlServerStatementBuilder : BaseStatementBuilder
{
    public OptimizedSqlServerStatementBuilder(IDbSetting dbSetting,
        IResolver<Field, IDbSetting, string> convertFieldResolver)
        : base(dbSetring, convertFieldResolver, null)
    { }
}
Please see the convert field resolver page for more details.