Skip to content

SeppPenner/ProtobufNetPrimitives

Repository files navigation

ProtobufNetPrimitives

ProtobufNetPrimitives is a library to transfer basic data types with protobuf-net.Grpc.

Build status GitHub issues GitHub forks GitHub stars License: MIT Nuget NuGet Downloads Known Vulnerabilities Gitter Blogger Patreon PayPal

Available for

  • Net 8.0
  • Net 9.0

Net Core and Net Framework latest and LTS versions

Available data types

Net type GRPC type Remark
bool DtoBool -
byte DtoByte -
char DtoChar -
DateTime DtoDateTime The value is internally stored as long, use the property DateTime to get the correct value.
DateTimeOffset DtoDateTimeOffset The value is internally stored as long, use the property DateTimeOffset to get the correct value.
decimal DtoDecimal -
double DtoDouble -
float DtoFloat -
Guid DtoGuid The value is internally stored as string, use the property Uuid to get the correct value.
int DtoInt -
long DtoLong -
nint DtoNint -
nuint DtoNuint -
sbyte DtoSbyte -
short DtoShort -
string DtoString -
TimeSpan DtoTimeSpan The value is internally stored as long, use the property TimeSpan to get the correct value.
uint DtoUint -
ulong DtoUlong -
ushort DtoUshort -

Non-Nullable and Nullable types are supported (Different sub-namespaces).

Why you can't use generics here

/// <summary>
/// The base DTO class.
/// </summary>
[ProtoContract]
[ProtoInclude(1, typeof(DtoBool))]
public class DtoBase<T> where T : new()
{
    /// <summary>
    /// Initializes a new instance of the <see cref="DtoBase{T}"/> class.
    /// </summary>
    public DtoBase()
    {
    }

    /// <summary>
    /// Initializes a new instance of the <see cref="DtoBase{T}"/> class.
    /// </summary>
    /// <param name="value">The value.</param>
    public DtoBase(T value)
    {
        this.Data = value;
    }

    /// <summary>
    /// Gets or sets the data.
    /// </summary>
    [ProtoMember(2)]
    public T Data { get; set; } = new();
}

/// <summary>
/// The DTO class to transfer bool data.
/// </summary>
[ProtoContract]
public class DtoBool : DtoBase<bool>
{
    /// <summary>
    /// Initializes a new instance of the <see cref="DtoBool"/> class.
    /// </summary>
    public DtoBool()
    {
    }

    /// <summary>
    /// Initializes a new instance of the <see cref="DtoBool"/> class.
    /// </summary>
    /// <param name="value">The value.</param>
    public DtoBool(bool value)
    {
        this.Data = value;
    }
}

throws the error subscribed under protobuf-net/protobuf-net#829 (Not resolved yet).

Install

dotnet add package HaemmerElectronics.SeppPenner.ProtobufNetPrimitives

Change history

See the Changelog.

About

ProtobufNetPrimitives is a library to transfer basic data types with protobuf-net.Grpc.

Topics

Resources

License

Stars

Watchers

Forks

Packages