Как через атрибут с помощью рефлексии запустить конструктор класса - 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));
}
}
}