public Either <RfcErrorInfo, T> GetFieldValue <T>(IDataContainerHandle handle, Func <Either <RfcErrorInfo, RfcFieldInfo> > func) { return(func().Bind(fieldInfo => { Logger.IfSome(l => l.LogTrace("reading field value", new { handle, fieldInfo, TargetType = typeof(T) })); return FieldMapper.GetField <T>(new FieldMappingContext(this, handle, fieldInfo)); })); }