Можно ли получить имя класса, которому присвоен атрибут?
На данный момент у меня есть что-то подобное, но шаблон тот же. Поэтому я хотел бы избежать литерала и получить его из имени класса.
[Foo("BAR")]
public class BarData
{
}
Измените, чтобы уточнить вопрос.
Пока атрибут выглядит так.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
internal class FooDataAttribute(string prop) : Attribute
{
public string Prop { get; } = prop.ToUpper();
}
Сейчас я вручную беру имя класса, удаляю суффикс Data и переводю остальное в верхний регистр. Было бы здорово, если бы существовал эффективный способ сделать это автоматически. Поэтому я бы получил что-то вроде
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
internal class FooDataAttribute() : Attribute
{
public string Prop {
get {
// do some magic here
}
}
}
[Foo] // Foo.Prop == "BAR"
public class BarData
{
}
[Foo] // Foo.Prop == "ABC"
public class AbcData
{
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... ssigned-to