Избегайте нескольких классов stati c с одним, другим свойством - PullRequest
0 голосов
/ 13 марта 2020

Мое приложение состоит из нескольких отдельных сборок. В соответствии с внутренним соглашением каждая сборка определяет идентификатор, используемый для ведения журнала.

В настоящее время существует базовый класс c, называемый CoreLog, который обеспечивает базовые функции c, такие как Write. Одним из параметров является Id, о котором я упоминал ранее.

Обычно каждая сборка затем определяет класс с именем Log, который просто вызывает функцию из CoreLog , а обеспечивает уникальный идентификатор сборки.

Таким образом, мы можем просто придерживаться использования Log.Write во всем коде.

Это работает хорошо, за исключением того факта, что мне придется делать это изначально для каждой новой сборки. И, если что-то изменится, мне придется также настроить множество файлов.

Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 13 марта 2020

Работает ли что-то подобное?

public static class SomeLogger
{
    public static void Write([CallerMemberName] string caller = string.Empty, string message)
    {
         //caller will be automatically populated
    }
}

Вы также можете использовать [CallerFilePath] и [CallerLineNumber], если хотите.

Документацию можно найти здесь .

Если вам требуется больше информации, чем указано в этих атрибутах, вы можете просто получить сборку вызывающей стороны :

public static class SomeLogger
{
    public static void Write(string message)
    {
         var callingAssembly = Assembly.GetCallingAssembly();
         //Grab whatever you need from callingAssembly and output it
    }
}
...