Namespace Metalama.Framework.Code.Invokers
This namespace defines invokers, which are objects that generate syntax that invokes methods or accesses properties, fields or events.
Example
The following aspect prints the value of all fields and automatic properties.
1using Metalama.Framework.Aspects;
2using System;
3
4namespace Doc.PrintFieldValues
5{
6 internal class PrintFieldValuesAttribute : OverrideMethodAspect
7 {
8 public override dynamic? OverrideMethod()
9 {
10 foreach ( var fieldOrProperty in meta.Target.Type.FieldsAndProperties )
11 {
12 if ( !fieldOrProperty.IsImplicitlyDeclared && fieldOrProperty.IsAutoPropertyOrField == true )
13 {
14 var value = fieldOrProperty.Value;
15 Console.WriteLine( $"{fieldOrProperty.Name}={value}" );
16 }
17 }
18
19 return meta.Proceed();
20 }
21 }
22}
1namespace Doc.PrintFieldValues
2{
3 internal class Foo
4 {
5 private readonly int _a;
6
7 public string? B { get; set; }
8
9 private static readonly int _c;
10
11 [PrintFieldValues]
12 public void Bar() { }
13 }
14}
1using System;
2
3namespace Doc.PrintFieldValues
4{
5 internal class Foo
6 {
7 private readonly int _a;
8
9 public string? B { get; set; }
10
11 private static readonly int _c;
12
13 [PrintFieldValues]
14 public void Bar()
15 {
16 var value = _a;
17 Console.WriteLine($"_a={value}");
18 var value_1 = _c;
19 Console.WriteLine($"_c={value_1}");
20 var value_2 = B;
21 Console.WriteLine($"B={value_2}");
22 return;
23 }
24 }
25}
Namespace members
Classes
InvokerOptions
Options that influence the behavior of invokers, i.e. IMethodInvoker, IFieldOrPropertyInvoker, IEventInvoker or IIndexerInvoker.
Interfaces
IEventInvoker
Allows adding/removing delegates to/from events.
IFieldOrPropertyInvoker
Allows accessing the the value of fields or properties through the Value property of
the IExpression interface. By default, the target instance
of the field or property is this
unless the property is static, and the base
implementation of the property is invoked,
i.e. the implementation before the current aspect layer. To change the default values, or to use the ?.
null-conditional operator,
use the With(InvokerOptions) method.
IIndexerInvoker
Allows accessing the value of indexers.
IMethodInvoker
Allows invocation of the method.