Запись ваших пользовательских атрибутов выглядела бы примерно так:
using System;
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method)]
public class LogAttribute : Attribute
{
public bool _loggingEnabled;
public LogAttribute(loggingEnabled)
{
_loggingEnabled = loggingEnabled;
}
}
Пример использования:
[Log(true)]
public class SampleClass
{
}
Если вам потребуются дополнительные разъяснения, если вы поделитесь чуть-чуть больше о своем Предполагаемое использование атрибутов, которое я смогу прояснить немного больше. Например, я не уверен, что вы хотите, чтобы ваш атрибут ведения журнала давал вам возможность явно указать, будет ли этот класс / структура регистрироваться, но именно так я решил продемонстрировать это. Также обратите внимание, что вы можете применить это к свойствам и различным другим элементам через атрибут AttributeUsage
в вашем объявлении класса атрибута. Я надеюсь, что это поможет.
Обновление:
Пример сохранения метода:
[Log(true)]
public void Save(Company company)
{
_context.Save();
}
Затем вы будете использовать метод stati c Attribute.GetCustomAttribute(MemberInfo element, Type attributeType)
для извлечения сохраненной информации в этом атрибуте. Поскольку в этом случае вы, вероятно, захотите использовать ведение журнала во многих местах, вы бы написали другой метод (скорее всего также stati c) где-то еще в вашем приложении, который бы выглядел примерно так (см. Ссылку на Ссылка System.Reflection ниже для получения дополнительной информации).
public static void Log(MemberInfo element)
{
LogAttribute attribute = Attribute.GetCustomAttribute(element, typeof(LogAttribute);
if (attribute._loggingEnabled)
{
// Create log file and add information from here.
}
}
Ссылка на атрибут
Ссылка на отражение