PostSharp Aspect Framework
The PostSharp Framework has been entirely ported to Metalama, with a few notable limitations:
Methods from an external assembly cannot be intercepted; only those from the current project can be.
The event of suspending and resuming an
asyncstate machine, as in PostSharp, cannot be advised. Specifically, theawaitkeyword cannot be advised.The raise semantic of an event cannot be intercepted, only the add and remove semantics can be.
Some constructor-related advice types are not yet implemented:
- After the last constructor
- After MemberwiseClone
PostSharp Architecture Framework
The equivalent of PostSharp Architecture Framework (e.g. the PostSharp.Constraints namespace) is the Metalama.Extensions.Architecture package.
See Verifying architecture for details.
PostSharp Patterns
| Library | Migration Status | Documentation | Feature gaps |
|---|---|---|---|
| Contracts | Completed | Metalama.Patterns.Contracts | None |
| Caching | Completed | Metalama.Patterns.Caching | None |
| INotifyPropertyChanged | Completed | Metalama.Patterns.Observability | See Migrating the [NotifyPropertyChanged] aspects |
| WPF | Completed | Metalama.Patterns.Wpf | None |
| Undo/Redo | Not started | ||
| Diagnostics (logging) | Not started | ||
| Multi-threading | Not started | ||
| Aggregatable | Not started | ||
| Weak event | Not started |