Jak korzystać z wtrysku właściwości z AutoFac?

W aplikacji Console używam Log4Net iw metodzie Main otrzymuję obiekt logger. Teraz chciałbym udostępnić ten obiekt dziennika we wszystkich moich klasach, pozwalając wszystkim klasom dziedziczyć po klasie BaseClass, która ma właściwość ILog i powinna być ustawiona przez właściwość Injection, a nie Constructor Injection.

Używam kontenera IoC AutoFac, jak wstrzyknąć mój obiekt dziennika do właściwości dziennika mojej klasy?

Jaki jest najlepszy / najłatwiejszy sposób osiągnięcia tego celu?

Czy jest jakiś sposób na automatyczne rozwiązywanie typów?

Poniżej znajduje się moja aplikacja testowa:

namespace ConsoleApplication1
{
    class Program
    {
        static ILog Log;
        static IContainer Container;

        static void Main(string[] args)
        {                
           InitializeLogger();

           InitializeAutoFac();

            // the below works but could it be done automatically (without specifying the name of each class)?
           Product.Log = Container.Resolve<ILog>();

           // tried below but didn't inject ILog object into the Product
           Container.Resolve<Product>();

           RunTest();

            Console.ReadLine();
        }

        private static void RunTest()
        {
            var product = new Product();
            product.Do();
        }

        private static void InitializeAutoFac()
        {
            var builder = new ContainerBuilder();

            builder.Register(c => Log).As<ILog>();

            builder.RegisterType<Product>().PropertiesAutowired();

            Container = builder.Build();            
        }

        private static void InitializeLogger()
        {
            log4net.Config.XmlConfigurator.Configure();

            Log = LogManager.GetLogger("LoggerName");
        }
    }

    public class Product
    {
        public static ILog Log { get; set; }

        public void Do()
        {
            // this throws exception because Log is not set   
            Log.Debug("some Debug");  
        }
    }
}

questionAnswers(5)

yourAnswerToTheQuestion