Example #1
0
    public static void Main(string[] args)
    {
        ContainerBuilder builder = new ContainerBuilder();

        builder.RegisterType <Interceptor>();
        builder.RegisterType <Dependency>().As <IDependency>();
        builder.RegisterType <Final>().As <IFinal>();
        builder.Register <IFinal>((c, p) =>
        {
            IDependency dependency = c.Resolve <IDependency>();
            int runtimeArgument    = p.Named <int>("runtimeArgument");
            return(new Final(dependency, runtimeArgument));
        }).As <IFinal>()
        .EnableInterfaceInterceptors()
        .InterceptedBy(typeof(Interceptor));
        builder.Register <Factory>((c, p) => {
            Factory.FactoryMethod finalObjectFactoryMethod = c.Resolve <Factory.FactoryMethod>();
            return(new Factory(finalObjectFactoryMethod));
        }).As <IFactory>()
        .EnableInterfaceInterceptors()
        .InterceptedBy(typeof(Interceptor));
        IContainer container = builder.Build();
        IFactory   factory   = container.Resolve <IFactory>();
        IFinal     final     = factory.GetFinalObject(42);

        final.Test();
    }
Example #2
0
 /// <summary>
 /// Poistaa tehdasmetodin.
 /// </summary>
 /// <typeparam name="T">Oliotyyppi</typeparam>
 /// <param name="tag">Tagi</param>
 /// <param name="method">Poistettava tehdasmetodi</param>
 public void RemoveFactory <T>(string tag, Factory.FactoryMethod method)
 {
     Factory.RemoveFactory <T>(tag, method);
 }
Example #3
0
 /// <summary>
 /// Luo tehdasmetodin tietylle tyypille ja tagille.
 /// </summary>
 /// <typeparam name="T">Oliotyyppi</typeparam>
 /// <param name="tag">Tagi</param>
 /// <param name="method">Metodi joka palauttaa olion</param>
 public void AddFactory <T>(string tag, Factory.FactoryMethod method)
 {
     Factory.AddFactory <T>(tag, method);
 }