Open sandboxFocus
  • TOC

Post­Sharp Documentation

Introduction

Deployment and Configuration

Adding Aspects to Code

Logging

Contracts

INotify­Property­Changed

Weak Event

XAML

Parent/Child, Visitor and Disposable

Undo/Redo

Caching

Multithreading

Developing Custom Aspects

Validating Architecture

Testing and Debugging

Miscellaneous

API Reference

Post­Sharp

Post­Sharp.​Aspects

Post­Sharp.​Aspects.​Advices

Post­Sharp.​Aspects.​Configuration

Post­Sharp.​Aspects.​Dependencies

Post­Sharp.​Aspects.​Internals

Post­Sharp.​Aspects.​Serialization

Post­Sharp.​Collections

Post­Sharp.​Constraints

Post­Sharp.​Extensibility

Post­Sharp.​Extensibility.​Build­Time­Logging

Post­Sharp.​Patterns

Post­Sharp.​Patterns.​Caching

Post­Sharp.​Patterns.​Caching.​Backends

Post­Sharp.​Patterns.​Caching.​Backends.​Azure

Post­Sharp.​Patterns.​Caching.​Backends.​Redis

Post­Sharp.​Patterns.​Caching.​Dependencies

Post­Sharp.​Patterns.​Caching.​Formatters

Post­Sharp.​Patterns.​Caching.​Implementation

Post­Sharp.​Patterns.​Caching.​Locking

Post­Sharp.​Patterns.​Caching.​Serializers

Post­Sharp.​Patterns.​Caching.​Value­Adapters

Post­Sharp.​Patterns.​Collections

Post­Sharp.​Patterns.​Collections.​Advices

Post­Sharp.​Patterns.​Contracts

Post­Sharp.​Patterns.​Diagnostics

Post­Sharp.​Patterns.​Diagnostics.​Adapters.​Asp­Net­Core

Post­Sharp.​Patterns.​Diagnostics.​Adapters.​Asp­Net­Framework

Post­Sharp.​Patterns.​Diagnostics.​Adapters.​Diagnostic­Source

Post­Sharp.​Patterns.​Diagnostics.​Adapters.​Http­Client

Post­Sharp.​Patterns.​Diagnostics.​Audit

Post­Sharp.​Patterns.​Diagnostics.​Backends

Post­Sharp.​Patterns.​Diagnostics.​Backends.​Application­Insights

Post­Sharp.​Patterns.​Diagnostics.​Backends.​Audit

Post­Sharp.​Patterns.​Diagnostics.​Backends.​Common­Logging

Post­Sharp.​Patterns.​Diagnostics.​Backends.​Console

Post­Sharp.​Patterns.​Diagnostics.​Backends.​Event­Source

Post­Sharp.​Patterns.​Diagnostics.​Backends.​Log4Net

Post­Sharp.​Patterns.​Diagnostics.​Backends.​Microsoft

Post­Sharp.​Patterns.​Diagnostics.​Backends.​Multiplexer

Post­Sharp.​Patterns.​Diagnostics.​Backends.​NLog

Post­Sharp.​Patterns.​Diagnostics.​Backends.​Null

Post­Sharp.​Patterns.​Diagnostics.​Backends.​Serilog

Post­Sharp.​Patterns.​Diagnostics.​Backends.​Trace

Post­Sharp.​Patterns.​Diagnostics.​Backends.​Trace­Source

Post­Sharp.​Patterns.​Diagnostics.​Contexts

Post­Sharp.​Patterns.​Diagnostics.​Correlation

Post­Sharp.​Patterns.​Diagnostics.​Custom

Post­Sharp.​Patterns.​Diagnostics.​Custom.​Messages

Post­Sharp.​Patterns.​Diagnostics.​Formatters

Post­Sharp.​Patterns.​Diagnostics.​Record­Builders

Post­Sharp.​Patterns.​Diagnostics.​Threading­Instrumentation

Post­Sharp.​Patterns.​Diagnostics.​Transactions

Post­Sharp.​Patterns.​Diagnostics.​Transactions.​Model

Post­Sharp.​Patterns.​Dynamic­Advising

Post­Sharp.​Patterns.​Formatters

Post­Sharp.​Patterns.​Model

Post­Sharp.​Patterns.​Model.​Controls

Post­Sharp.​Patterns.​Model.​Type­Adapters

Post­Sharp.​Patterns.​Recording

Post­Sharp.​Patterns.​Recording.​Operations

Post­Sharp.​Patterns.​Threading

Post­Sharp.​Patterns.​Threading.​Models

Post­Sharp.​Patterns.​Utilities

Post­Sharp.​Patterns.​Xaml

Post­Sharp.​Reflection

Post­Sharp.​Reflection.​Method­Body

Post­Sharp.​Serialization

  • Article

Enum MulticastAttributes

Attributes of elements to which multicast custom attributes (MulticastAttribute) apply.

Namespace: PostSharp.Extensibility
Assembly: PostSharp.dll
Syntax
[Flags]
public enum MulticastAttributes
Remarks

If you specify this in a MulticastAttributeUsageAttribute, then the annotated attribute can only be multicast to elements that have these attributes. For example, if you create an aspect and annotate it with [MulticastAttributeUsage(TargetMemberAttributes=MulticastAttributes.Protected)], then multicasting will never apply the aspect to any type member that isn't protected.

If you specify this in a property of MulticastAttribute, then that specific multicast will be even more narrowed just to elements that have these attributes. For example, if you annotate a class with the aspect from the previous paragraph with [MyAspect(TargetMemberAttributes=MulticastAttributes.Virtual)], then it will only apply to that class's members that are both protected and, for methods, virtual.

There are 8 categories of flags. If you specify at least one flag for a category, you narrow the multicast just to elements that have one of the flags you specified in the category. For example, if you specify Public | Protected, you multicast to elements that are public or protected, but not private. Their other attributes (such as whether they are instance or static) do not matter.

The categories are visibility (public, private, ...); scope (static or instance); abstraction (abstract or non-abstract); virtuality (virtual or non-virtual); implementation (managed or unmanaged); literality (literal or nonliteral); generation (compiler-generated or user-created); and parameter (in, ref, or out).

If a category doesn't make sense for an element, then specifying its flags will have no effect for that element. For example, if you narrow your multicast down to virtual elements, it will still apply to fields or types (which can't be virtual).

Fields

Name Description
Abstract

Abstract methods.

All

All members.

AnyAbstraction

Any abstraction (Abstract | NonAbstract).

AnyGeneration

Any code generation (CompilerGenerated | UserGenerated)l

AnyImplementation

Any implementation (Managed | NonManaged).

AnyLiterality

Any field literality (Literal | NonLiteral).

AnyParameter

Any kind of parameter passing (InParameter | OutParameter | RefParameter).

AnyScope

Any scope (Static | Instance).

AnyVirtuality

Any virtuality (Virtual | NonVirtual).

AnyVisibility

Any visibility.

CompilerGenerated

Compiler-generated code.

Default

Specifies that the set of target attributes is inherited from the parent custom attribute.

InParameter

Input parameters.

Instance

Instance scope.

Internal

Internal (visible inside the current assembly).

InternalAndProtected

Internal and protected (visible inside derived types that are defined in the current assembly).

InternalOrProtected

Internal or protected (visible inside all derived types and in the current assembly).

Literal

Literal fields.

Managed

Managed code implementation.

NonAbstract

Concrete (non-abstract) methods.

NonLiteral

Non-literal fields.

NonManaged

Non-managed code implementation (external or system).

NonVirtual

Non-virtual methods.

OutParameter

Output (out in C#) parameters.

Private

Private (visible inside the current type).

Protected

Protected (visible inside derived types).

Public

Public (visible everywhere).

RefParameter

Input/Output (ref in C#) parameters.

Static

Static scope.

UserGenerated

User-generated code (anything expected CompilerGenerated).

Virtual

Virtual methods.

  • Navigation