kvadrat4o

take2

Mar 28th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.11 KB | None | 0 0
  1. namespace _01HarestingFields
  2. {
  3.     using System;
  4.     using System.Text;
  5.     using System.Reflection;
  6.     using System.Linq;
  7.  
  8.     class HarvestingFieldsTest
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             var input = "";
  13.             string result = "";
  14.             StringBuilder sb = new StringBuilder();
  15.             var typeOfHarvester = typeof(HarvestingFields);
  16.             FieldInfo[] fields = typeOfHarvester.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
  17.             while ((input = Console.ReadLine()) != "HARVEST")
  18.             {
  19.                 switch (input)
  20.                 {
  21.                     case "private":
  22.                         result = GetAllFields(fields.Where(f => f.IsPrivate).ToArray(),sb);
  23.                         Console.WriteLine(result);
  24.                         break;
  25.                     case "public":
  26.                         result = GetAllFields(fields.Where(f => f.IsPublic).ToArray(), sb);                        
  27.                         Console.WriteLine(result);
  28.                         break;
  29.                     case "protected":
  30.                         result = GetAllFields(fields.Where(f => f.IsFamily).ToArray(), sb);
  31.                         Console.WriteLine(result);
  32.                         break;
  33.                     case "all":
  34.                         result = GetAllFields(fields, sb);
  35.                         Console.WriteLine(result);
  36.                         break;
  37.                     default:
  38.                         break;
  39.                 }
  40.  
  41.             }
  42.         }
  43.  
  44.         private static string GetAllFields(FieldInfo[] fields, StringBuilder sb)
  45.         {
  46.             foreach (var field in fields)
  47.             {
  48.                 var accessModifier = field.Attributes.ToString().ToLower();
  49.                 if (accessModifier.Equals("family"))
  50.                 {
  51.                     accessModifier = "protected";
  52.                 }
  53.                 sb.AppendLine($"{accessModifier} {field.FieldType.Name} {field.Name}");
  54.             }
  55.  
  56.             return sb.ToString().TrimEnd();
  57.         }
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment