diff options
Diffstat (limited to 'csharp/src/Google.Protobuf/MessageParser.cs')
-rw-r--r-- | csharp/src/Google.Protobuf/MessageParser.cs | 12 |
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> |