aboutsummaryrefslogtreecommitdiff
path: root/csharp/src/Google.Protobuf/MessageParser.cs
diff options
context:
space:
mode:
Diffstat (limited to 'csharp/src/Google.Protobuf/MessageParser.cs')
-rw-r--r--csharp/src/Google.Protobuf/MessageParser.cs12
1 files changed, 12 insertions, 0 deletions
diff --git a/csharp/src/Google.Protobuf/MessageParser.cs b/csharp/src/Google.Protobuf/MessageParser.cs
index 4d35554a..d3fa6cb1 100644
--- a/csharp/src/Google.Protobuf/MessageParser.cs
+++ b/csharp/src/Google.Protobuf/MessageParser.cs
@@ -69,6 +69,7 @@ namespace Google.Protobuf
{
IMessage message = factory();
message.MergeFrom(data, DiscardUnknownFields);
+ CheckMergedRequiredFields(message);
return message;
}
@@ -83,6 +84,7 @@ namespace Google.Protobuf
{
IMessage message = factory();
message.MergeFrom(data, offset, length, DiscardUnknownFields);
+ CheckMergedRequiredFields(message);
return message;
}
@@ -95,6 +97,7 @@ namespace Google.Protobuf
{
IMessage message = factory();
message.MergeFrom(data, DiscardUnknownFields);
+ CheckMergedRequiredFields(message);
return message;
}
@@ -107,6 +110,7 @@ namespace Google.Protobuf
{
IMessage message = factory();
message.MergeFrom(input, DiscardUnknownFields);
+ CheckMergedRequiredFields(message);
return message;
}
@@ -123,6 +127,7 @@ namespace Google.Protobuf
{
IMessage message = factory();
message.MergeDelimitedFrom(input, DiscardUnknownFields);
+ CheckMergedRequiredFields(message);
return message;
}
@@ -135,6 +140,7 @@ namespace Google.Protobuf
{
IMessage message = factory();
MergeFrom(message, input);
+ CheckMergedRequiredFields(message);
return message;
}
@@ -167,6 +173,12 @@ namespace Google.Protobuf
}
}
+ internal static void CheckMergedRequiredFields(IMessage message)
+ {
+ if (!message.IsInitialized())
+ throw new InvalidOperationException("Parsed message does not contain all required fields");
+ }
+
/// <summary>
/// Creates a new message parser which optionally discards unknown fields when parsing.
/// </summary>