Как я могу использовать пользовательский атрибут моего проекта c# - PullRequest
0 голосов
/ 03 мая 2020

Я хочу использовать пользовательский атрибут в моем n-уровневом проекте. для

-Кэширование- -Logging -Validation -Exception

Ответы [ 2 ]

0 голосов
/ 03 мая 2020

Запись ваших пользовательских атрибутов выглядела бы примерно так:

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.
     }
}

Ссылка на атрибут

Ссылка на отражение

0 голосов
/ 03 мая 2020

Прежде всего вы должны искать АОП. это своего рода развивающаяся методология

Аспектно-ориентированное программирование (AOP) - это парадигма программирования, направленная на повышение модульности за счет разделения междисциплинарных задач. Википедия

Это не так просто, как вы думаете, в C# вы должны использовать какую-то стороннюю библиотеку.

Я предлагаю начать с MrAdvice , это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...