C # расширение существующего метода интерфейса ILog Log4net - PullRequest
0 голосов
/ 16 октября 2018

В настоящее время я пытаюсь расширить поведение метода Ilog.Error.

Обычно я просто наследую от класса, перезаписываю метод, который хочу расширить, и использую вместо этого мой новый класс, например:

public class MyLogger:Logger
{
    overwrite Error(..)
    {
        base.Error(..);
        Mycode(..);
    }
}

Тем не менее, поскольку я имею дело с интерфейсами при генерации логгеров через Logmanager, я не смог бы расширить класс таким способом.Есть ли другой способ расширить методы, которые также работают с интерфейсами?

1 Ответ

0 голосов
/ 16 октября 2018

overwrite не является ключевым словом в C#.Используйте override Для того, чтобы этот метод был переопределен из базового класса, его необходимо пометить либо virtual, что означает, что он может быть переопределен, либо abstract, что означает, что имеет длябыть переопределенным.Для дальнейших ссылок смотрите здесь:

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/inheritance#abstract-and-virtual-methods

РЕДАКТИРОВАТЬ:

Поскольку некоторые из комментариев утверждают, что вы должны создать метод расширения, вы можете к немувот так:

public static class Log4NetExtension 
{    
   public static void LogError(this Logger logger) 
   {
     logger.Error(..);
     //your code
   }
}

и используйте вот так:

var logger = new Logger();
logger.LogError();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...