Во-первых, обратите внимание, что protobuf-net - это просто одна доступная реализация для .NET;в любом случае ...
"test1.proto" - это не .proto - это C #;.proto не требуется для использования с protobuf-net, но в вашем сценарии взаимодействия это очень хорошая идея.Для этого есть плагин VS2010, или, альтернативно, инструмент protogen
, который находится в zip protobuf-net:
protogen -i:test2.proto -o:test2.cs
Это должно сгенерировать test2.cs
с содержимым:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
// Generated from: test2.proto
namespace test2
{
[global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"Person")]
public partial class Person : global::ProtoBuf.IExtensible
{
public Person() {}
private int _id;
[global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"id", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
public int id
{
get { return _id; }
set { _id = value; }
}
private string _name;
[global::ProtoBuf.ProtoMember(2, IsRequired = true, Name=@"name", DataFormat = global::ProtoBuf.DataFormat.Default)]
public string name
{
get { return _name; }
set { _name = value; }
}
private string _email = "";
[global::ProtoBuf.ProtoMember(3, IsRequired = false, Name=@"email", DataFormat = global::ProtoBuf.DataFormat.Default)]
[global::System.ComponentModel.DefaultValue("")]
public string email
{
get { return _email; }
set { _email = value; }
}
private global::ProtoBuf.IExtension extensionObject;
global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
{ return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
}
}
Обратите внимание, что есть дополнительные переключатели, если вы хотите, например, попытаться нормализовать регистр (таким образом, вы получаете Id
, Name
, Email
и т. Д.) Или хотите включить дополнительную поддержку сериализатора (BinaryFormatter
DataContractSerializer
и т. Д.)