Как через атрибут с помощью рефлексии запустить конструктор класса - C#

Узнай цену своей работы

Формулировка задачи:

Как через атрибут с помощью рефлексии запустить конструктор класса, к которому прицеплен пользовательский атрибут?

Решение задачи: «Как через атрибут с помощью рефлексии запустить конструктор класса»

textual
Листинг программы
using System;
using System.Linq;
using System.Reflection;
 
namespace ConsoleApplication96
{
    [AttributeUsage(AttributeTargets.Class)]
    public class FigureTypeAttribute : Attribute
    {
        public FigureTypeAttribute(string CurFig)
        {
            Fig = CurFig;
        }
        public string Fig;
    }
 
    [FigureType("Circle")]
    class Circle
    {
        public override string ToString()
        {
            return "CIRCLE!!!";
        }
    }
    [FigureType("Rectangle")]
    class Rectangle
    {
        public override string ToString()
        {
            return "Rectangle!!!";
        }
    }
    
    class Program
    {
        static void Main()
        {
            string figure = "Circle";//Console.ReadLine(); 
            var figureType = Assembly.GetExecutingAssembly()
                                     .GetTypes()
                                     .FirstOrDefault(t =>
                                            {
                                                var attr = t.GetCustomAttribute<FigureTypeAttribute>();
                                                if (attr == null)
                                                    return false;
                                                return attr.Fig == figure;
                                            });
            if (figureType == null)
                Console.WriteLine("Тип не найден");
            else 
                Console.WriteLine(Activator.CreateInstance(figureType));
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.667 из 5
Похожие ответы