public static Delegate?From(Type type)
 {
     // bool
     // byte
     // dto
     // decimal
     // double
     // float
     // int
     // long
     // sbyte
     // short
     // timespan
     // uint
     // ulong
     // ushort
     if (type == typeof(Guid))
     {
         return(_toGuid ?? (_toGuid = ToGuid));
     }
     if (type == typeof(Guid?))
     {
         return(_toGuidNull ?? (_toGuidNull = (ReadOnlySpan <byte> value) => (Guid?)ToGuid(value)));
     }
     if (type == typeof(TimeSpan))
     {
         return(_toTimeSpan ?? (_toTimeSpan = ToTimeSpan));
     }
     if (type == typeof(TimeSpan?))
     {
         return(_toTimeSpanNull ?? (_toTimeSpanNull = (ReadOnlySpan <byte> value) => (TimeSpan?)ToTimeSpan(value)));
     }
     return(null);
 }
 /// <summary>
 /// Defines a conversion from a byte sequence to a member value.
 /// </summary>
 /// <param name="propertyOrField"></param>
 /// <param name="fromBytes">Deserializes a value from a source ReadOnlySpan&lt;byte&gt;</param>
 public Builder With <TField>(
     Expression <Func <TResult, TField> > propertyOrField,
     FromSpan <byte, TField> fromBytes)
 {
     propertyOrField.ThrowIfNull(nameof(propertyOrField));
     fromBytes.ThrowIfNull(nameof(fromBytes));
     GetOrAdd(propertyOrField).FromBlob = fromBytes;
     return(this);
 }
 /// <summary>
 /// Defines a conversion from a UTF-16 string to a member value.
 /// </summary>
 /// <param name="propertyOrField"></param>
 /// <param name="fromText">Deserializes a value from a source ReadOnlySpan&lt;char&gt;</param>
 public Builder With <TField>(
     Expression <Func <TResult, TField> > propertyOrField,
     FromSpan <char, TField> fromText)
 {
     propertyOrField.ThrowIfNull(nameof(propertyOrField));
     fromText.ThrowIfNull(nameof(fromText));
     GetOrAdd(propertyOrField).FromUtf16Text = fromText;
     return(this);
 }
 public static Delegate?From(Type type)
 {
     if (type == typeof(string))
     {
         return(_toString ??
                (_toString = (ReadOnlySpan <char> text) => text.ToString()));
     }
     if (type == typeof(ReadOnlyMemory <char>))
     {
         return(_toStringMemory ??
                (_toStringMemory = (ReadOnlySpan <char> text) => text.ToString().AsMemory()));
     }
     return(null);
 }
Beispiel #5
0
 public ValueAssigner(
     string?fieldName,
     FieldSetter <TResult, TField> setter,
     Func <long, TField>?convertInteger,
     Func <double, TField>?convertFloat,
     FromSpan <char, TField>?convertTextUtf16,
     FromSpan <byte, TField>?convertTextUtf8,
     FromSpan <byte, TField>?convertBlob,
     Func <TField>?convertNull)
 {
     _fieldName        = fieldName;
     _setter           = setter;
     _convertInteger   = convertInteger;
     _convertFloat     = convertFloat;
     _convertTextUtf16 = convertTextUtf16;
     _convertTextUtf8  = convertTextUtf8;
     _convertBlob      = convertBlob;
     _convertNull      = convertNull;
 }
 /// <summary>
 /// Defines a conversion from a byte sequence.
 /// </summary>
 /// <param name="fromBytes">Deserializes a value from a source ReadOnlySpan&lt;byte&gt;</param>
 public ScalarBuilder With(FromSpan <byte, TResult> fromBytes)
 {
     fromBytes.ThrowIfNull(nameof(fromBytes));
     _builder.FromBlob = fromBytes;
     return(this);
 }
 /// <summary>
 /// Defines a conversion from a UTF-16 string.
 /// </summary>
 /// <param name="fromText">Deserializes a value from a source ReadOnlySpan&lt;char&gt;</param>
 public ScalarBuilder With(FromSpan <char, TResult> fromText)
 {
     fromText.ThrowIfNull(nameof(fromText));
     _builder.FromUtf16Text = fromText;
     return(this);
 }