Poco2Proto 1.0.0
dotnet add package Poco2Proto --version 1.0.0
NuGet\Install-Package Poco2Proto -Version 1.0.0
<PackageReference Include="Poco2Proto" Version="1.0.0" />
<PackageVersion Include="Poco2Proto" Version="1.0.0" />
<PackageReference Include="Poco2Proto" />
paket add Poco2Proto --version 1.0.0
#r "nuget: Poco2Proto, 1.0.0"
#:package Poco2Proto@1.0.0
#addin nuget:?package=Poco2Proto&version=1.0.0
#tool nuget:?package=Poco2Proto&version=1.0.0
Poco2Proto
Convert simple C# POCO classes into .proto message definitions for gRPC, automatically.
This library is designed to be lightweight, simple, and dependency-free and ideal for quickly generating Protobuf message contracts from your existing models.
✨ Features
- Converts public C# class properties into
.protomessage fields - Supports
string, numeric types,bool,byte[] - Supports
List<T>and arrays (repeatedfields) - Supports nullable types (
int?,bool?, etc.) - Converts property names to
snake_case - Maps
DateTimetostring(simple & practical) - Zero external dependencies
📦 Installation
NuGet Package Manager
Install-Package Poco2Proto
.NET CLI
dotnet add package Poco2Proto
🚀 Usage Example
C# Class
public class UserProfile
{
public string FullName { get; set; }
public int? Age { get; set; }
public bool IsActive { get; set; }
public List<string> Roles { get; set; }
public string[] Tags { get; set; }
}
Generate .proto
using Poco2Proto;
string proto = Poco2Proto.GenerateProto<UserProfile>();
Console.WriteLine(proto);
// Or save to file
File.WriteAllText("UserProfile.proto", proto);
✅ Example Output
syntax = "proto3";
package YourNamespace;
message UserProfile {
string full_name = 1;
int32 age = 2;
bool is_active = 3;
repeated string roles = 4;
repeated string tags = 5;
}
You can now place this .proto file in your gRPC project and compile it with protoc.
🔍 Notes & Limitations
This package is intentionally simple and works best when:
- Your classes are pure POCO DTOs
- No complex inheritance or polymorphism is needed
- You generate
.protodefinitions as a starting point and refine manually if needed
Future enhancements may include:
- Recursive nested message generation
- Enum support
- Custom type mappings
🛠️ Contributing
Pull requests are welcome! If you'd like to extend the mapper behavior, open an issue or submit a PR.
📄 License
Check the repository.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 125 | 11/8/2025 |
Initial release of Poco2Proto.
- Generate .proto from POCO class
- Supports int, long, bool, float, double, string, byte[]
- Supports List<T> and arrays (mapped to repeated)
- Supports nullable types
- DateTime mapped to string
- Snake_case field naming conversion