elena1234

Create Attribute and Print all methods by author

Jun 3rd, 2021 (edited)
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.53 KB | None | 0 0
  1. using System;
  2.  
  3. namespace CreateAttribute
  4. {
  5.     [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)]
  6.    public class AuthorAttribute : Attribute
  7.     {
  8.         public AuthorAttribute(string name)
  9.         {
  10.             this.Name = name;
  11.         }
  12.  
  13.         public string Name { get; set; }
  14.     }
  15. }
  16.  
  17.  
  18. //
  19. using System.Reflection;
  20. using System.Linq;
  21. using System;
  22.  
  23. namespace CodingTracker
  24. {
  25.     public class Tracker
  26.     {
  27.         public void PrintMethodsByAuthor(string author)
  28.         {
  29.             var types = Assembly.GetExecutingAssembly().GetTypes(); // types
  30.             foreach (var type in types)
  31.             {
  32.                 var methods = type.GetMethods(BindingFlags.Static | BindingFlags.Instance
  33.                                              | BindingFlags.Public | BindingFlags.NonPublic); // methods
  34.  
  35.                 foreach (var method in methods)
  36.                 {
  37.                     var atributes = method.GetCustomAttributes<AuthorAttribute>(); // atributes
  38.                     if (atributes.Any(m => m.Name == author))
  39.                     {
  40.                         Console.WriteLine(method);
  41.                     }
  42.                 }
  43.             }
  44.         }
  45.     }
  46. }
  47.  
  48.  
  49. //
  50. using CodingTracker;
  51.  
  52. namespace CreateAttribute
  53. {
  54.     [Author("Ventsi")]
  55.     class StartUp
  56.     {
  57.         [Author("Gosho")]
  58.         static void Main(string[] args)
  59.         {
  60.             var tracker = new Tracker();
  61.             tracker.PrintMethodsByAuthor("Gosho");
  62.         }
  63.     }
  64. }
  65.  
  66.  
Add Comment
Please, Sign In to add comment