Почему моя.NET Приписывает не, выполняют действие?

@jeff

, по моему скромному мнению, Ваш кажется немногим долго. Однако это действительно кажется немного более устойчивым с поддержкой "вчера" и "годы". Но по моему опыту когда это используется, человек, скорее всего, просмотрит содержание за первые 30 дней. Это - только действительно жесткие люди, которые приезжают после этого. Так именно поэтому я обычно выбираю сохранять это коротким и простым.

Это - метод, который я в настоящее время использую на одном из моих веб-сайтов. Это только возвращает относительный день, час, время. И затем пользователь должен хлопнуть на "назад" по выводу.

public static string ToLongString(this TimeSpan time)
{
    string output = String.Empty;

    if (time.Days > 0)
        output += time.Days + " days ";

    if ((time.Days == 0 || time.Days == 1) && time.Hours > 0)
        output += time.Hours + " hr ";

    if (time.Days == 0 && time.Minutes > 0)
        output += time.Minutes + " min ";

    if (output.Length == 0)
        output += time.Seconds + " sec";

    return output.Trim();
}
5
задан John Saunders 22 July 2009 в 13:05
поделиться

3 ответа

Если вам нужно выполнить действие, когда элемент управления входит в метод, вам следует взглянуть на аспектно-ориентированное программирование и такие фреймворки, как PostSharp . Атрибуты не предназначены для выполнения чего-либо сами по себе. Это просто набор данных (или метаданных, если хотите), прикрепленных к материалам в сборках IL, которые можно запросить во время выполнения.

11
ответ дан 18 December 2019 в 14:49
поделиться

Атрибуты разрешают только декорирование типов и членов, но сам атрибут не может получить доступ к декорированному объекту. Вам нужно будет использовать параметры конструктора атрибута для передачи любых данных, которые вам необходимы для работы в атрибуте.

Если вы хотите использовать атрибуты для автоматического изменения поведения их целевых объектов, вам нужно будет посмотреть на Решения АОП, такие как PostSharp .

1
ответ дан 18 December 2019 в 14:49
поделиться

Атрибут никогда не создается, поэтому его конструктор никогда не вызывается. Атрибут остается как метаданные, пока вы не воспользуетесь отражением для его получения. Как уже упоминалось ранее, вам нужен инструмент аспектно-ориентированного программирования. PostSharp работает, изменяя сборку на этапе после сборки. Если вы используете Castle Windsor или Unity Inversion of Control Containers, они оба также предлагают возможности АОП.

1
ответ дан 18 December 2019 в 14:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: