|
@@ -221,10 +221,13 @@ void MessageGenerator::Generate(io::Printer* printer) {
|
|
"private bool _frozen = false;\n"
|
|
"private bool _frozen = false;\n"
|
|
"public bool IsFrozen { get { return _frozen; } }\n\n");
|
|
"public bool IsFrozen { get { return _frozen; } }\n\n");
|
|
|
|
|
|
- // Parameterless constructor
|
|
|
|
|
|
+ // Parameterless constructor and partial OnConstruction method.
|
|
printer->Print(
|
|
printer->Print(
|
|
vars,
|
|
vars,
|
|
- "public $class_name$() { }\n\n");
|
|
|
|
|
|
+ "public $class_name$() {\n"
|
|
|
|
+ " OnConstruction();\n"
|
|
|
|
+ "}\n\n"
|
|
|
|
+ "partial void OnConstruction();\n\n");
|
|
|
|
|
|
GenerateCloningCode(printer);
|
|
GenerateCloningCode(printer);
|
|
GenerateFreezingCode(printer);
|
|
GenerateFreezingCode(printer);
|
|
@@ -311,7 +314,7 @@ void MessageGenerator::GenerateCloningCode(io::Printer* printer) {
|
|
vars["class_name"] = class_name();
|
|
vars["class_name"] = class_name();
|
|
printer->Print(
|
|
printer->Print(
|
|
vars,
|
|
vars,
|
|
- "public $class_name$($class_name$ other) {\n");
|
|
|
|
|
|
+ "public $class_name$($class_name$ other) : this() {\n");
|
|
printer->Indent();
|
|
printer->Indent();
|
|
// Clone non-oneof fields first
|
|
// Clone non-oneof fields first
|
|
for (int i = 0; i < descriptor_->field_count(); i++) {
|
|
for (int i = 0; i < descriptor_->field_count(); i++) {
|