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(); }
public FinalNode(DocumentIdNode documentIdNode, IFinal final) : base(documentIdNode, children: null) { _final = final; Id = final.Id ?? new IdentifierNode(Identifier.New()); OnEntry = final.OnEntry.AsArrayOf <IOnEntry, OnEntryNode>(true); OnExit = final.OnExit.AsArrayOf <IOnExit, OnExitNode>(true); DoneData = final.DoneData?.As <DoneDataNode>(); }