Base class for aspects applied on types, but having the same lifetime as instances of the type to which they are applied.
Inheritance
Implements
Namespace: PostSharp.Aspects
Assembly: PostSharp.dll
Syntax
[HasInheritedAttribute]
[MulticastAttributeUsage(MulticastTargets.Class, AllowExternalAssemblies = false, TargetTypeAttributes = MulticastAttributes.Instance)]
[AttributeUsage(AttributeTargets.Assembly|AttributeTargets.Class|AttributeTargets.Interface, AllowMultiple = true)]
[Serializer(null)]
public abstract class InstanceLevelAspect : TypeLevelAspect, ITypeLevelAspect, ITypeLevelAspectBuildSemantics, IAspectBuildSemantics, IValidableAnnotation, ICloneAwareAspect, IInstanceScopedAspect, IAspectRemarks
<p>This class is provided for convenience. You get the same functionality by deriving your
aspect class directly from <xref href="PostSharp.Aspects.TypeLevelAspect" data-throw-if-not-resolved="false"></xref> and implementing the interface
<xref href="PostSharp.Aspects.IInstanceScopedAspect" data-throw-if-not-resolved="false"></xref>
</p>
<br />
<p>See <xref href="PostSharp.Aspects.IInstanceScopedAspect" data-throw-if-not-resolved="false"></xref> for a discussion of instance-scoped aspects.</p>
<br />
<p>
note
All classes implementing IAspect should typically be marked as serializable using the SerializableAttribute or PSerializableAttribute custom attribute . Fields that are only used at runtime (and unknown at compile-time) should be carefully marked with the NonSerializedAttribute or PNonSerializedAttribute custom attribute. When PostSharp is used on a platform that does not support aspect serialization (such as .NET Compact Framework, Silverlight, or Windows Phone), or when another aspect serializer is used, it is not necessary to mark the aspect class as serializable. For more information, see Understanding Aspect Serialization .
Constructors
| Name | Description |
|---|---|
| InstanceLevelAspect() |
Properties
| Name | Description |
|---|---|
| Instance | Gets the object to which the current aspect has been applied. |
Methods
| Name | Description |
|---|---|
| CreateAspectConfiguration() | Method invoked at build time to create a concrete AspectConfiguration instance specifically for the current Aspect type. |
| CreateInstance(AdviceArgs) | Creates a new instance of the aspect based on the current instance, serving as a prototype. |
| OnCloned(ICloneAwareAspect) | Method called after the an object enhanced by the current aspect has been
cloned using MemberwiseClone(). The |
| RuntimeInitializeInstance() | Initializes the aspect instance. This method is invoked when all system elements of the aspect (like member imports) have completed. |