ContractClassAttribute Class
.NET Framework 4.5
Specifies that a separate type contains the code contracts for this type.
Namespace:
System.Diagnostics.Contracts
Assembly: mscorlib (in mscorlib.dll)
The ContractClassAttribute type exposes the following members.
| Name | Description | |
|---|---|---|
![]() ![]() ![]() | ContractClassAttribute | Initializes a new instance of the ContractClassAttribute class. |
| Name | Description | |
|---|---|---|
![]() ![]() ![]() | TypeContainingContracts | Gets the type that contains the code contracts for this type. |
![]() | TypeId | When implemented in a derived class, gets a unique identifier for this Attribute. (Inherited from Attribute.) |
| Name | Description | |
|---|---|---|
![]() ![]() ![]() | Equals | Infrastructure. Returns a value that indicates whether this instance is equal to a specified object. (Inherited from Attribute.) |
![]() ![]() ![]() | GetHashCode | Returns the hash code for this instance. (Inherited from Attribute.) |
![]() ![]() ![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | IsDefaultAttribute | When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class. (Inherited from Attribute.) |
![]() | Match | When overridden in a derived class, returns a value that indicates whether this instance equals a specified object. (Inherited from Attribute.) |
![]() ![]() ![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
| Name | Description | |
|---|---|---|
![]() ![]() | _Attribute.GetIDsOfNames | Maps a set of names to a corresponding set of dispatch identifiers. (Inherited from Attribute.) |
![]() ![]() | _Attribute.GetTypeInfo | Retrieves the type information for an object, which can be used to get the type information for an interface. (Inherited from Attribute.) |
![]() ![]() | _Attribute.GetTypeInfoCount | Retrieves the number of type information interfaces that an object provides (either 0 or 1). (Inherited from Attribute.) |
![]() ![]() | _Attribute.Invoke | Provides access to properties and methods exposed by an object. (Inherited from Attribute.) |
The following example shows how to use the ContractClassAttribute attribute to specify that the contracts for the IArray interface are contained in the IArrayContracts class.
using System; using System.Diagnostics.Contracts; // An IArray is an ordered collection of objects. [ContractClass(typeof(IArrayContract))] public interface IArray { // The Item property provides methods to read and edit entries in the array. Object this[int index] { get; set; } int Count { get; } // Adds an item to the list. // The return value is the position the new element was inserted in. int Add(Object value); // Removes all items from the list. void Clear(); // Inserts value into the array at position index. // index must be non-negative and less than or equal to the // number of elements in the array. If index equals the number // of items in the array, then value is appended to the end. void Insert(int index, Object value); // Removes the item at position index. void RemoveAt(int index); } [ContractClassFor(typeof(IArray))] internal abstract class IArrayContract : IArray { int IArray.Add(Object value) { // Returns the index in which an item was inserted. Contract.Ensures(Contract.Result<int>() >= -1); Contract.Ensures(Contract.Result<int>() < ((IArray)this).Count); return default(int); } Object IArray.this[int index] { get { Contract.Requires(index >= 0); Contract.Requires(index < ((IArray)this).Count); return default(int); } set { Contract.Requires(index >= 0); Contract.Requires(index < ((IArray)this).Count); } } public int Count { get { Contract.Requires(Count >= 0); Contract.Requires(Count <= ((IArray)this).Count); return default(int); } } void IArray.Clear() { Contract.Ensures(((IArray)this).Count == 0); } void IArray.Insert(int index, Object value) { Contract.Requires(index >= 0); Contract.Requires(index <= ((IArray)this).Count); // For inserting immediately after the end. Contract.Ensures(((IArray)this).Count == Contract.OldValue(((IArray)this).Count) + 1); } void IArray.RemoveAt(int index) { Contract.Requires(index >= 0); Contract.Requires(index < ((IArray)this).Count); Contract.Ensures(((IArray)this).Count == Contract.OldValue(((IArray)this).Count) - 1); } }
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.


