Преглед изворни кода

Use 0 as the default value for all enums, rather than finding the actual enum value name

This will make it easier to change the enum value names, as it reduces the number of places they're used.
Jon Skeet пре 10 година
родитељ
комит
2a197b3eb0
1 измењених фајлова са 3 додато и 1 уклоњено
  1. 3 1
      src/google/protobuf/compiler/csharp/csharp_field_base.cc

+ 3 - 1
src/google/protobuf/compiler/csharp/csharp_field_base.cc

@@ -306,7 +306,9 @@ std::string FieldGeneratorBase::default_value() {
 std::string FieldGeneratorBase::default_value(const FieldDescriptor* descriptor) {
 std::string FieldGeneratorBase::default_value(const FieldDescriptor* descriptor) {
   switch (descriptor->type()) {
   switch (descriptor->type()) {
     case FieldDescriptor::TYPE_ENUM:
     case FieldDescriptor::TYPE_ENUM:
-      return type_name() + "." + descriptor->default_value_enum()->name();
+      // All proto3 enums have a default value of 0, and there's an implicit conversion from the constant 0 to
+      // any C# enum. This means we don't need to work out what we actually mapped the enum value name to.
+     return "0";
     case FieldDescriptor::TYPE_MESSAGE:
     case FieldDescriptor::TYPE_MESSAGE:
     case FieldDescriptor::TYPE_GROUP:
     case FieldDescriptor::TYPE_GROUP:
       if (IsWrapperType(descriptor)) {
       if (IsWrapperType(descriptor)) {