public static FixedSizeDataInfo <T> RepresentAs <T, TBase>(FixedSizeDataInfo <TBase> @base, Func <TBase, T> fromBase, Func <T, TBase> toBase) { return(new FixedSizeDataInfo <T>( @base.SizeInBytes, (buffer) => fromBase(@base.Read(buffer)), (buffer, value) => @base.Write(buffer, toBase(value)))); }
public static FixedSizeDataInfo <T> Create <T, TRaw>(FixedSizeDataInfo <TRaw> raw, IConverter <T, TRaw> converter) { return(new FixedSizeDataInfo <T>( raw.SizeInBytes, (buffer) => converter.ConvertFrom(raw.Read(buffer)), (buffer, value) => raw.Write(buffer, converter.ConvertTo(value)))); }
public static FixedSizeDataInfo <T> Enum <T, TUnderlying>(FixedSizeDataInfo <TUnderlying> underlying) where T : Enum where TUnderlying : struct { return(Create(underlying, EnumToUnderlyingConverter <T, TUnderlying> .Instance)); }
public static FixedSizeDataInfo <T> Enum <T>(FixedSizeDataInfo <byte> underlying) where T : Enum { return(Enum <T, byte>(underlying)); }