Base class for other custom attributes in this namespace.
Inheritance
Namespace: PostSharp.Patterns.Contracts
Assembly: PostSharp.Patterns.Common.dll
Syntax
[AspectConfiguration(SerializerType = typeof(MsilAspectSerializer))]
[MulticastAttributeUsage(MulticastTargets.Field|MulticastTargets.Property|MulticastTargets.Parameter|MulticastTargets.ReturnValue, TargetMemberAttributes = MulticastAttributes.NonAbstract|MulticastAttributes.NonLiteral, Inheritance = MulticastInheritance.Multicast, AllowMultiple = false, PersistMetaData = true)]
[AttributeUsage(AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Parameter|AttributeTargets.ReturnValue)]
[ProvideAspectRole("Validation")]
public abstract class LocationContractAttribute : MulticastAttribute, ILocationLevelAspect, IAspectRemarks
The basic error message is identified by LocationContractErrorMessage and obtained from the provider set in LocalizedTextProvider.
In all formatting strings, the following parameters are replaced:
-
{0}is replaced by the location name. -
{1}is replaced by the location kind. -
{2}is replaced by a string containing both location kind and name. -
{3}is replaced by the value which caused the error when being assigned to the location. - Further parameters are described in the remarks sections of contracts which override the GetErrorMessageArguments() method.
Note that an array of error message arguments is cached for each location.
Contracts are inherited: a contract added to a parameter or return value of an abstract, virtual or interface method also applies to the overriding or implementing methods.
To create a custom contract, derive a class from LocationContractAttribute and implement ILocationValidationAspect<T>
for each type of value that the contract supports. The ValidateValue(T, string, LocationKind, LocationValidationContext) method returns an exception when the value is invalid,
or null otherwise. To let users customize the exception, create it with the CreateException(ContractExceptionInfo) method
of ExceptionFactory.
Constructors
| Name | Description |
|---|---|
| LocationContractAttribute() | Initializes a new instance of the LocationContractAttribute class. |
Properties
| Name | Description |
|---|---|
| ErrorMessage | Gets or sets the error message formatting string. |
Methods
| Name | Description |
|---|---|
| CompileTimeValidate(LocationInfo) | Validates that the current aspect has been applied to a valid location. |
| CreateArgumentException(object, string, LocationKind) | Creates an ArgumentException with an error message formatted from ErrorMessage and given concrete values. |
| CreateArgumentNullException(object, string, LocationKind) | Creates an ArgumentNullException with an error message formatted from ErrorMessage and given concrete values. |
| CreateArgumentOutOfRangeException(object, string, LocationKind) | Creates an ArgumentOutOfRangeException with an error message formatted from ErrorMessage and given concrete values. |
| CreatePostconditionFailedException(object, string, LocationKind) | Creates a PostconditionFailedException with an error message formatted from ErrorMessage and given concrete values. |
| FormatErrorMessage(object, string, LocationKind) | Formats the ErrorMessage with concrete values. |
| GetErrorMessage() | Gets the unformatted error message as defined by the instance. |
| GetErrorMessageArguments() | Gets the values of the additional arguments for the error message associated with a particular instance of LocationContractAttribute.
These arguments can be referenced from the error message string by |
| RuntimeInitialize(LocationInfo) | Initializes the aspect at run time. |
| SelectSelfOrNothing(LocationInfo) | Selects the target location of the current aspect, unless the target location is a dependency property or an attached property. |
| ValidateValueDynamic(object, string, LocationKind, LocationValidationContext) | Validates a weakly-typed (boxed) value, typically the value of a dependency property or an attached property. |