RSGC- MetadataFromObject – part 9

 

 

name Metadata from object
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 retrieve the values of properties directly, not by reflection
 

The code that you start with is


    [AutoMethods(template = TemplateMethod.CustomTemplateFile, CustomTemplateFileName = "GenerateFromPOCO.txt")]

    public partial class Person

    {

        public string FirstName { get; set; }

        public string LastName { get; set; }

    }


The code that you will use is



    var p = new Person();                                      

    p.FirstName = "Andrei";

    p.LastName = "Ignat";

    var last = p.ValueProperty(Person_EnumProps.LastName);

    var first = p.ValueProperty("FirstName");

    

    Console.WriteLine(last + " "+first);

 

The code that is generated is


    public enum Person_EnumProps{                                                                  

        None

        ,FirstName // Public 

        ,LastName // Public 

    }

    partial class Person{

        public object ValueProperty(Person_EnumProps val){

            if(val == Person_EnumProps.FirstName) {

                return this.FirstName;

            }

            if(val == Person_EnumProps.LastName) {

                return this.LastName;

            }

        throw new ArgumentException("cannot find "+ val);

        }

        public object ValueProperty(string val){

            if(string.Compare("FirstName",val,StringComparison.CurrentCultureIgnoreCase)==0) {

                return this.FirstName;

            }

            if(string.Compare("LastName",val,StringComparison.CurrentCultureIgnoreCase)==0) {

                return this.LastName;

            }

        throw new ArgumentException("cannot find "+ val);

        }

    }

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

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