RSCG- Method Decorator – part 11

 

 

name Method decorator
nuget

https://www.nuget.org/packages/AOPMethodsCommon/
https://www.nuget.org/packages/AOPMethodsGenerator/

link http://msprogrammer.serviciipeweb.ro/category/roslyn/
author Andrei Ignat

This will generate code to decorate methods with anything you want ( stopwatch, logging , authorization…)
 

The code that you start with is


    [AutoMethods(template =TemplateMethod.CustomTemplateFile,MethodPrefix ="prv" ,CustomTemplateFileName ="MethodDecorator.txt")]

    public partial class Person

    {

         public string FirstName{ get; set; }

         public string LastName { get; set; }

    

         private string prvFullName()

         {

              return FirstName + " " + LastName;

         }

    }


The code that you will use is



    var p = new Person();                 

    p.FirstName = "Andrei";

    p.LastName = "Ignat";

    Console.WriteLine(p.FullName());

 

The code that is generated is


    [GeneratedCode("AOPMethods", "2021.2.22.1125")]                                                                 

    [CompilerGenerated]

    public partial class Person{

              

         public  string FullName (

                   

         [CallerMemberName] string memberName = "",

         [CallerFilePath] string sourceFilePath = "",

         [CallerLineNumber] int sourceLineNumber = 0){

              var sw=Stopwatch.StartNew();

              try{

                   Console.WriteLine("--prvFullName start ");

                   Console.WriteLine("called from class :"+memberName );

                   Console.WriteLine("called from file :"+sourceFilePath );

                   Console.WriteLine("called from line :"+sourceLineNumber );

                        prvFullName();

              }

              catch(Exception ex){

                   Console.WriteLine("error in prvFullName:" + ex.Message);

                   throw;

              }

              finally{

                   Console.WriteLine($"--------prvFullName end in {sw.Elapsed.TotalMilliseconds}");

              }

    

    

         }//end FullName

         

         

    }

Example Code: https://github.com/ignatandrei/RSCG_Examples/tree/main/MethodDecorator

All RSCG

NrBlog Post
1RSCG–part 1
2RSCG- AppVersion–part 2
3http://msprogrammer.serviciipeweb.ro/2021/02/17/rsgc-enum-part-3/
4RSGC-JSON to Class- part 4
5RSGC-Constructor – Deconstructor – part 5
6RSGC – DTO Mapper – part 6
7RSGC – Skinny Controllers- part 7
8RSGC-Builder Design Pattern – part 8
9RSGC- MetadataFromObject – part 9
10RSGC- Dynamic Mock – part 10
11RSCG- Method Decorator – part 11
12RSCG – Curry – Partial function – part 12
13RSCG- part 13 – IFormattable
14RSCG- part 14 – DP_Decorator
15RSCG- part 15 – Expression Generator
16RSCG- part 16 – Many Others
17RSCG- the book
18RSCG–Template Rendering- part 17
19CI Version
20HttpClientGenerator
21Query from database
22AutoRegister
23TinyTypes
24Static2Interface
25AppSettings
26Properties
27
Roslyn Source Code Generators