Exportovat (0) Tisk
Rozbalit vše
Tento článek byl přeložen strojově počítačem. Původní text zobrazíte přesunutím ukazatele myši nad jednotlivé věty článku. Další informace
Překlad
Originál
Toto téma nebylo dosud ohodnoceno - Ohodnotit toto téma

ContractArgumentValidatorAttribute – třída

.NET Framework 4.5

Umožňuje faktoringu starší if-then-throw do zvláštních metod pro opětovné použití kódu a poskytuje plnou kontrolu nad thrown výjimky a argumenty.

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

Obor názvů:  System.Diagnostics.Contracts
Sestavení:  mscorlib (v mscorlib.dll)
[AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple = false)]
[ConditionalAttribute("CONTRACTS_FULL")]
public sealed class ContractArgumentValidatorAttribute : Attribute

Typ ContractArgumentValidatorAttribute zveřejňuje následující členy.

  NázevPopis
Veřejná metodaPodporováno v: .NET pro aplikace pro Windows StoreContractArgumentValidatorAttributeVytvoří novou instanci třídy ContractArgumentValidatorAttribute.
Nahoru
  NázevPopis
Veřejná vlastnostTypeIdPo implementaci v odvozené třídě, získá tento jedinečný identifikátor Attribute. (Zděděno z Attribute.)
Nahoru
  NázevPopis
Veřejná metodaPodporováno v: .NET pro aplikace pro Windows StoreEqualsInfrastruktura. Vrátí hodnotu, která označuje, zda je tato instance rovna zadaný objekt. (Zděděno z Attribute.)
Veřejná metodaPodporováno v: .NET pro aplikace pro Windows StoreGetHashCodeVrátí kód hash pro tuto instanci. (Zděděno z Attribute.)
Veřejná metodaPodporováno v: .NET pro aplikace pro Windows StoreGetTypeZískává Type aktuální instance. (Zděděno z Object.)
Veřejná metodaIsDefaultAttributePřepsat v odvozené třídě, označuje, zda je hodnota této instanci výchozí hodnotu pro odvozené třídy. (Zděděno z Attribute.)
Veřejná metodaMatchPři přepsání v odvozené třídě, vrátí hodnotu, která označuje, zda tato instance se rovná zadaný objekt. (Zděděno z Attribute.)
Veřejná metodaPodporováno v: .NET pro aplikace pro Windows StoreToStringVrací řetězec, který představuje aktuální objekt. (Zděděno z Object.)
Nahoru
  NázevPopis
Explicitní implementace rozhraníSoukromá metoda_Attribute.GetIDsOfNamesMapuje sadu názvů odpovídající sadu identifikátorů odeslání. (Zděděno z Attribute.)
Explicitní implementace rozhraníSoukromá metoda_Attribute.GetTypeInfoNačte informace o typu objektu, který lze získat informace o rozhraní typu. (Zděděno z Attribute.)
Explicitní implementace rozhraníSoukromá metoda_Attribute.GetTypeInfoCountVyhledá číslo rozhraní typu informace, že objekt obsahuje (0 nebo 1). (Zděděno z Attribute.)
Explicitní implementace rozhraníSoukromá metoda_Attribute.InvokePoskytuje přístup k vlastnostem a metodám prostřednictvím objektu. (Zděděno z Attribute.)
Nahoru

Pokud váš kód používá explicitní if-then-throw kód pro ověření parametrů, je mohou být zaměstnávající pomocné metody kontroly a vyvolávají určité výjimky při selhání, jak ukazuje následující příklad.

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

V tomto příkladu MyMethod má absolvovat předpoklad, zadáním hodnoty parametru by neměl být null. Povolit nástroje smlouvy uznávají, že volání ValidationHelper.NotNull odpovídá smlouvy, lze označit volané metody s ContractArgumentValidator atributu. EndContractBlock() Volání by měl sloužit k povolení nástroje takto extrahovat odpovídající specifikace pro generování dokumentu a kontrola statické.

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

Kromě if-then-throw prohlášení části smlouvy smlouvy validátor metody mohou obsahovat volání metod hodnocení jiné smlouvy. Však žádné jiné smlouvy (například Requires, nebo Ensures) jsou povoleny. Kód, který následuje EndContractBlock() volání ignoruje všechny nástroje smlouvy.Následující příklad ukazuje ověřovací modul argument rozsahu z hlediska existující zapsat NotNull metoda validator.

static class ValidationHelper 
{
[ContractArgumentValidator]
public static void NotNull(object argument, string parameterName) 
{ ... }
[ContractArgumentValidator]
public static void InRange(object[] array , int index , string arrayName, string indexName) {
ValidationHelper .NotNull(array , arrayName);
if (index < 0) throw new ArgumentOutOfRangeException(indexName, ...);
if (index >= array.Length) throw new ArgumentOutOfRangeException(indexName, ...);
Contract.EndContractBlock();
...
}
...
public void MyMethod(int[] data, int position ) 
{
ValidationHelper .InRange(data, position , "data", " position ");
...
}

Z specifikace pohledu, metoda MyMethod má následující tři smluv:

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

Standardní metody volání metody validátor smlouvy lze volně smíchat s ostatní smlouvy jako Ensures nebo Requires.

.NET Framework

Podporováno v: 4.5

.NET pro aplikace pro Windows Store

Podporováno v: Windows 8

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (role Server Core není podporována), Windows Server 2008 R2 (role Server Core je podporována s aktualizací SP1 nebo novější, architektura Itanium není podporována)

Rozhraní .NET Framework nepodporuje některé verze platforem. Seznam podporovaných verzí naleznete v tématu .NET – požadavky na systém.
Jakékoli veřejné členy tohoto typu deklarované jako static (Shared v jazyce Visual Basic) jsou bezpečné pro přístup z více vláken. Není zaručeno, že členy instancí jsou bezpečné pro přístup z více vláken.

Obsah vytvořený komunitou

Přidat
Zobrazit:
© 2014 Microsoft. Všechna práva vyhrazena.