ContractArgumentValidatorAttribute Clase
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

ContractArgumentValidatorAttribute (Clase)

.NET Framework (current version)
 

Permite dividir el código heredado de if-then-throw en métodos independientes para su reutilización y también proporciona un control total sobre las excepciones producidas y sus argumentos.

Espacio de nombres:   System.Diagnostics.Contracts
Ensamblado:  mscorlib (en mscorlib.dll)

System.Object
  System.Attribute
    System.Diagnostics.Contracts.ContractArgumentValidatorAttribute

[AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple = false)]
[ConditionalAttribute("CONTRACTS_FULL")]
public sealed class ContractArgumentValidatorAttribute : Attribute

NombreDescripción
System_CAPS_pubmethodContractArgumentValidatorAttribute()

Inicializa una nueva instancia de la clase ContractArgumentValidatorAttribute.

NombreDescripción
System_CAPS_pubpropertyTypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.(Heredado de Attribute.)

NombreDescripción
System_CAPS_pubmethodEquals(Object)

Esta API admite la infraestructura de product y no está pensada para usarse directamente desde su código. Devuelve un valor que indica si esta instancia equivale al objeto especificado. (Heredado de Attribute.)

System_CAPS_pubmethodGetHashCode()

Devuelve el código hash de esta instancia.(Heredado de Attribute.)

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual. (Heredado de Object.)

System_CAPS_pubmethodIsDefaultAttribute()

Cuando se invalida en una clase derivada, indica si el valor de esta instancia es el valor predeterminado para la clase derivada.(Heredado de Attribute.)

System_CAPS_pubmethodMatch(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual al objeto especificado. (Heredado de Attribute.)

System_CAPS_pubmethodToString()

Retorna una cadena que representa al objeto actual. (Heredado de Object.)

NombreDescripción
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.(Heredado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Obtiene la información del tipo de un objeto, que puede utilizarse para obtener la información del tipo de una interfaz. (Heredado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de tipo de información que suministra un objeto (0 ó 1)

(Heredado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.(Heredado de Attribute.)

If your code uses explicit if-then-throw code to validate parameters, you may be employing helper methods that perform checks and throw particular exceptions on failure, as shown in the following example.

using System;

static class ValidationHelper 
{
   public static void NotNull(object argument, string parameterName) 
   {
      if (argument == null) throw new ArgumentNullException(parameterName, 
                                                            "The parameter cannot be null.");
   }
}

public class Example
{
   public void Execute(string value) 
   {
      ValidationHelper.NotNull(value, "value");

      // Body of method goes here.
   }
}

In this example, Execute has an elective precondition specifying that the parameter value should not be null.To enable the contract tools to recognize that the call to ValidationHelper.NotNull represents a contract, you can mark the called method with the ContractArgumentValidatorAttribute attribute.The Contract.EndContractBlock method call should be used to enable the tools to extract the proper specifications for document generation and static checking, as follows.

using System;
using System.Diagnostics.Contracts;

static class ValidationHelper 
{
   [ContractArgumentValidator]
   public static void NotNull(object argument, string parameterName) 
   {
      if (argument == null) throw new ArgumentNullException(parameterName, 
                                                            "The parameter cannot be null.");
      Contract.EndContractBlock();
   }
}

In addition to if-then-throw statements, the contract section of contract validator methods may contain calls to other contract validator methods.However, no other contracts (such as Contract.Requires, or Contract.Ensures) are allowed.Code that follows the Contract.EndContractBlock call is ignored by all contract tools.

The following example shows a range argument validator written in terms of an existing NotNull validator method.

using System;
using System.Diagnostics.Contracts;

static class ValidationHelper 
{
   [ContractArgumentValidator]
   public static void NotNull(object argument, string parameterName) 
   {
      if (argument == null) throw new ArgumentNullException(parameterName, 
                                                            "The parameter cannot be null.");
      Contract.EndContractBlock();
   }

   [ContractArgumentValidator]
   public static void InRange(object[] array, int index, string arrayName, string indexName)
   {
      NotNull(array, arrayName);

      if (index < 0) 
         throw new ArgumentOutOfRangeException(indexName, 
                                               "The index cannot be negative.");
      if (index >= array.Length) 
         throw new ArgumentOutOfRangeException(indexName, 
                                               "The index is outside the bounds of the array.");                                                     
      Contract.EndContractBlock();
   }
}

public class Example
{
   public void Execute(object[] data, int position) 
   {
      ValidationHelper.InRange(data, position, "data", "position");

      // Body of method goes here.
   }
}

From a specification point of view, the method MyMethod has the following three contracts:

Contract.Requires<ArgumentNullException>(data != null);
Contract.Requires<ArgumentOutOfRangeException>(position >= 0);
Contract.Requires<ArgumentOutOfRangeException>(position < data.Length);

In standard methods, calls to contract validator methods can be freely mixed with other contracts such as Contract.Ensures or Contract.Requires.

Universal Windows Platform
Disponible desde 4.5
.NET Framework
Disponible desde 4.5
Portable Class Library
Compatible con: portable .NET platforms
Windows Phone Silverlight
Disponible desde 8.0
Windows Phone
Disponible desde 8.1

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Volver al principio
Mostrar:
© 2016 Microsoft