Programme principal déclencheur du BusinessProcess, dont l'objectif est de d'enregistrer dans un ContainerBuilder Autofac, des classes héritantes d'une classe de base héritant elle-même d'une interface unique. Ensuite, objectif de résoudre les classes héritantes qui sont dans le container pour pouvoir appeler la méthode dans la classe de base (OUF!) :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autofac;
namespace AutofacTest
{
class Program
{
static void Main(string[] args)
{
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterType<BusinessProcessNormal>().SingleInstance();
builder.RegisterType<BusinessProcessAdvanced>().SingleInstance();
IContainer container = builder.Build();
container.Resolve<BusinessProcessAdvanced>().WaitForHumanDecision();
container.Resolve<BusinessProcessNormal>().WaitForHumanDecision();
Console.WriteLine("Fin du BusinessProcess.");
Console.ReadLine();
}
}
}
Interface de laquelle hérite uniquement la classe de base :
using System;
namespace AutofacTest
{
interface IBusinessProcess
{
void Buy();
void Sell();
}
}
Classe de base héritant de l'interface IBusinessProcess et comportant entre autres la méthode WaitForHumanDecision, puis ensuite déclaration de deux classes héritantes de la classe de base :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Autofac;
namespace AutofacTest
{
public class BusinessProcessBase : IBusinessProcess
{
public virtual void Sell()
{
Console.WriteLine("Default Selling.");
}
public virtual void Buy()
{
Console.WriteLine("Default Buying.");
}
public void WaitForHumanDecision()
{
Console.WriteLine("Waiting for human decision.");
}
}
public class BusinessProcessAdvanced : BusinessProcessBase
{
public override void Sell()
{
Console.WriteLine("Advanced Selling.");
}
public override void Buy()
{
Console.WriteLine("Advanced Buying.");
}
}
public class BusinessProcessNormal : BusinessProcessBase
{
public override void Sell()
{
Console.WriteLine("Normal Selling.");
}
public override void Buy()
{
Console.WriteLine("Normal Buying.");
}
}
}