How to use Autofac in C#

This post shows you how to use Autofac in C# .NET

What is autofac c#

Autofac is an addictive IoC (Inversion of Control) container for .NET Core, ASP.NET Core, .NET 4.5.1+, Universal Windows apps, and more. It manages the dependencies between classes so that applications stay easy to change as they grow in size and complexity.

First off, You can create a new console project called AutofacDemo

c# autofac

Next, Right click on your project select Manage NuGet Packages -> Search autofac -> install

c# install autofac

After you finish installing the library, you can create an interface called IConnection

public interface IConnection
{
    void Connect();
    void Command(string command);
}

Create MySqlConnection inherit from IConnection, then implement Command, Connect methods as shown below.

public class MySqlConnection : IConnection
{
    public void Command(string command)
    {
        Console.Write("Execute MySql command: {0}", command);
    }

    public void Connect()
    {
        Console.WriteLine("Connect to MySql Server...");
    }
}

Similarly, create SqlConnection inherit from IConnection

public class SqlConnection : IConnection
{
    public void Command(string command)
    {
        Console.Write("Execute Sql command: {0}", command);
    }

    public void Connect()
    {
        Console.WriteLine("Connect to Sql Server...");
    }
}

Finally, Create an AppService class to manage the instance you want to create

public static class AppService
{
    static IContainer Container { get; set; }
    static AppService()
    {
        ContainerBuilder builder = new ContainerBuilder();
        builder.RegisterType<MySqlConnection>().As<IConnection>();//Change your instance you want to create
        Container = builder.Build();
    }

    public static IConnection Connection => Container.Resolve<IConnection>();
}

You can call Connect, Command method in Main method

class Program
{
    static void Main(string[] args)
    {
        AppService.Connection.Connect();
        AppService.Connection.Command("Insert");
        Console.ReadLine();//Wait
    }
}

You can easily to change the instance you want to create, we don't need to change code in the Main method

builder.RegisterType<SqlConnection>().As<IConnection>();//Change your instance you want to create

Press F5 to run your program

c# autofac

Related