YIIHAW is a static cross-language aspect weaver for .NET. It was designed with one clear objective in mind: To make an efficent aspect weaver that does not introduce any runtime overhead when applying aspects to an assembly. This is achieved by weaving directly at the IL-instruction level; when intercepting methods, the IL-instructions of the advice and the target method are effectively merged together, creating one combined method. This way, no unnecessary instructions, references or method calls are introduced within the generated assembly.
Advantages of using YIIHAW include:
- "around" interception incurs no runtime overhead
- no unnecessary constructs are added to the woven assembly
- no extra dependencies are added to the woven assembly (the assembly will be completely self-contained once the weaving has taken place)
- advice application is typesafe (checked partly by the compiler and partly by YIIHAW at weave-time)
- woven assemblies can be subject to further weaving (without introducing any runtime overhead)
- advice can itself be woven before being applied to target code - in effect advice can be composed
YIIHAW currently support:
- intercepting methods and properties
- introducing methods, properties, classes, fields, enums, delegates and events
- changing inheritance structure and implementing interfaces
The name "YIIHAW" is a recursive acronym for "YIIHAW Is an Intelligent and High-performing Aspect Weaver". It was created as part of an MSc thesis at the IT University of Copenhagen.
If you have any questions regarding YIIHAW, please use the discussion forums (you need to be logged in in order to enter the forums).