AOP through Unity interceptors - Logging
 The first thing we think when talking about interception is logging. Let's see an implementation of a Logger.   But before introducing the Logger implementation, let us scaffold a console sample project.   public interface IFoo     {         FooItem GetItem(string name);     }      public interface IStore     {         StoreItem Get(int id);          IEnumerable<StoreItem> GetAll();          void Save(StoreItem item);                 void ThrowException();     }      public class FooImpl : IFoo     {         public FooItem GetItem(string name)         {             return new FooItem { Name = name };         }     }      public class StoreImpl : IStore     {         public StoreItem Get(int id)         {             Thread.Sleep(1000);             return new StoreItem { Id = id, Name = "Fake name" };         }          public IEnumerables<StoreItem> GetAll()         {             Thread.Sleep(2000);              return new List<StoreItem>()          ...
 
 
