Tento článek byl přeložený strojově. Pokud chcete zobrazit článek v angličtině, zaškrtněte políčko Angličtina. Anglickou verzi článku můžete také zobrazit v místním okně přesunutím ukazatele myši nad text.
Překlad
Angličtina

Třída ContractArgumentValidatorAttribute

.NET Framework (current version)
 

Umožňuje přesunutí starší verze if-then-throw kód do samostatné metody pro opakované použití a poskytuje úplnou kontrolu nad vyvolané výjimky a argumenty.

Obor názvů:   System.Diagnostics.Contracts
Sestavení:  mscorlib (v mscorlib.dll)

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

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

NázevPopis
System_CAPS_pubmethodContractArgumentValidatorAttribute()

Inicializuje novou instanci ContractArgumentValidatorAttribute třídy.

NázevPopis
System_CAPS_pubpropertyTypeId

Jakmile je implementována v odvozené třídě, získá jedinečný identifikátor pro tuto Attribute.(Zděděno z Attribute.)

NázevPopis
System_CAPS_pubmethodEquals(Object)

Toto rozhraní API podporuje infrastrukturu produkt a není určené pro použití přímo z vašeho kódu. Vrátí hodnotu, která označuje, zda je tato instance rovna zadanému objektu.(Zděděno z Attribute.)

System_CAPS_pubmethodGetHashCode()

Vrátí kód hash této instance.(Zděděno z Attribute.)

System_CAPS_pubmethodGetType()

Získá Type aktuální instance.(Zděděno z Object.)

System_CAPS_pubmethodIsDefaultAttribute()

Při přepsání v odvozené třídě, označuje, zda hodnoty této instance je výchozí hodnota pro odvozené třídy.(Zděděno z Attribute.)

System_CAPS_pubmethodMatch(Object)

Při přepsání v odvozené třídě, vrátí hodnotu, která označuje, zda tato instance se rovná zadaného objektu.(Zděděno z Attribute.)

System_CAPS_pubmethodToString()

Vrátí řetězec, který představuje aktuální objekt.(Zděděno z Object.)

NázevPopis
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.(Zděděno z Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu pro objekt, který lze použít k získání informací o typu pro rozhraní.(Zděděno z Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).(Zděděno z Attribute.)

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

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.(Zděděno z Attribute.)

Pokud váš kód používá explicitní if-then-throw kódu ověřit parametry, které mohou být zaměstnávající pomocné metody k provádění kontrol a vyvolat výjimky konkrétní při selhání, jak je znázorněno v následujícím příkladu.

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.
   }
}

V tomto příkladu Execute obsahuje volitelných předběžnou podmínku určující, zda by neměl být hodnota parametru null. Chcete-li povolit nástroje smlouvy pro rozpoznala, že volání ValidationHelper.NotNull představuje smlouvy, můžete označit volané metody s ContractArgumentValidatorAttribute atributu. Contract.EndContractBlock Volání metody by měla být použita k povolení nástroje pro extrahování správné specifikace generování dokumentu a statické kontroly následujícím způsobem.

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();
   }
}

Kromě if-then-throw Příkazy části smlouvy smlouvy validátoru metody mohou obsahovat volání metod validátoru jiné smlouvy. Však žádné jiných smluv (jako je například Contract.Requires, nebo Contract.Ensures) jsou povoleny. Kód, který následuje Contract.EndContractBlock volání je ignorován v všechny nástroje smlouvy.

Následující příklad ukazuje – validátor argument rozsahu zapsány z hlediska existující NotNull Metoda ověření.

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.
   }
}

Z specifikace hlediska Execute Metoda má následující tři smlouvy:

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

Ve standardní metody volání do metody validátoru smlouvy lze volně kombinovat s jiných smluv, jako Contract.Ensures nebo Contract.Requires.

Univerzální platforma Windows
K dispozici od 8
.NET Framework
K dispozici od 4.5
Přenosná knihovna tříd
Podporováno v: přenosné platformy .NET
Windows Phone Silverlight
K dispozici od 8.0
Windows Phone
K dispozici od 8.1

Všechny veřejné statické členy ( Sdílené v jazyce Visual Basic) tohoto typu mají bezpečný přístup z více vláken. U členů instancí není bezpečný přístup z více vláken zaručen.

Zpět na začátek
Zobrazit: