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<byte></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<char></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); }
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<byte></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<char></param> public ScalarBuilder With(FromSpan <char, TResult> fromText) { fromText.ThrowIfNull(nameof(fromText)); _builder.FromUtf16Text = fromText; return(this); }