Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace _01HarestingFields
- {
- using System;
- using System.Text;
- using System.Reflection;
- using System.Linq;
- class HarvestingFieldsTest
- {
- static void Main(string[] args)
- {
- var input = "";
- string result = "";
- string harvestingfields = "HarvestingFields";
- StringBuilder sb = new StringBuilder();
- bool takePrivate = false;
- bool takeProtected = false;
- bool takePublic = false;
- while ((input = Console.ReadLine()) != "HARVEST")
- {
- switch (input)
- {
- case "private":
- takePrivate = true;
- result = GetAllFields(harvestingfields,sb,takePrivate,takeProtected,takePublic);
- Console.WriteLine(result);
- break;
- case "public":
- takePublic = true;
- result = GetAllFields(harvestingfields, sb, takePrivate, takeProtected, takePublic);
- Console.WriteLine(result);
- break;
- case "protected":
- takeProtected = true;
- result = GetAllFields(harvestingfields, sb, takePrivate, takeProtected, takePublic);
- Console.WriteLine(result);
- break;
- case "all":
- result = GetAllFields(harvestingfields, sb, takePrivate, takeProtected, takePublic);
- Console.WriteLine(result);
- break;
- default:
- break;
- }
- }
- }
- private static string GetAllFields(string harvestingfields, StringBuilder sb, bool takePrivate, bool takeProtected, bool takePublic)
- {
- var typeOfHarvester = typeof(HarvestingFields);
- FieldInfo[] fields = typeOfHarvester.GetFields( BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic );
- if (takePrivate)
- {
- fields = fields.Where(f => f.IsPrivate).ToArray();
- takePrivate = false;
- }
- else if (takeProtected)
- {
- fields = fields.Where(f => f.IsFamily).ToArray();
- takeProtected = false;
- }
- else if (takePublic)
- {
- fields = fields.Where(f => f.IsPublic).ToArray();
- takePublic = false;
- }
- foreach (var field in fields)
- {
- var accessModifier = field.Attributes.ToString().ToLower();
- if (accessModifier.Equals("family"))
- {
- accessModifier = "protected";
- }
- sb.AppendLine($"{accessModifier} {field.FieldType.Name} {field.Name}");
- }
- return sb.ToString().TrimEnd();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment