| #region Copyright notice and license | |
| // Protocol Buffers - Google's data interchange format | |
| // Copyright 2008 Google Inc. All rights reserved. | |
| // | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file or at | |
| // https://developers.google.com/open-source/licenses/bsd | |
| #endregion | |
| using System; | |
| namespace Google.Protobuf | |
| { | |
| /// <summary> | |
| /// Helper methods for throwing exceptions when preconditions are not met. | |
| /// </summary> | |
| /// <remarks> | |
| /// This class is used internally and by generated code; it is not particularly | |
| /// expected to be used from application code, although nothing prevents it | |
| /// from being used that way. | |
| /// </remarks> | |
| public static class ProtoPreconditions | |
| { | |
| /// <summary> | |
| /// Throws an ArgumentNullException if the given value is null, otherwise | |
| /// return the value to the caller. | |
| /// </summary> | |
| public static T CheckNotNull<T>(T value, string name) where T : class | |
| { | |
| if (value == null) | |
| { | |
| throw new ArgumentNullException(name); | |
| } | |
| return value; | |
| } | |
| /// <summary> | |
| /// Throws an ArgumentNullException if the given value is null, otherwise | |
| /// return the value to the caller. | |
| /// </summary> | |
| /// <remarks> | |
| /// This is equivalent to <see cref="CheckNotNull{T}(T, string)"/> but without the type parameter | |
| /// constraint. In most cases, the constraint is useful to prevent you from calling CheckNotNull | |
| /// with a value type - but it gets in the way if either you want to use it with a nullable | |
| /// value type, or you want to use it with an unconstrained type parameter. | |
| /// </remarks> | |
| internal static T CheckNotNullUnconstrained<T>(T value, string name) | |
| { | |
| if (value == null) | |
| { | |
| throw new ArgumentNullException(name); | |
| } | |
| return value; | |
| } | |
| } | |
| } |