Example #1
0
        public void Stuff()
        {
            var createShipFactory =
                AspectWeaver.Of(() => new Ship())
                .WeaveAspects(
                    new AspectProvider(new DoStuffAspect(), new CrazyAspect()),
                    t => t.Methods(
                        s => s.LockOnTarget(null),
                        s => s.RecieveMessage(null, false),
                        s => s.FullStop()),
                    t => t.Properties(
                        s => s.Armor,
                        s => s.Captain)
                    )
                .WeaveAspects(
                    new AspectProvider(new CrazyAspect()),
                    t => t.Properties(
                        s => s.HullIntegrity
                        )
                    )
                .CreateFactory <IShip>();

            Catalog.Services.Register(_ => createShipFactory());
            var ship = Catalog.Factory.Resolve <IShip>();
        }