/examples/ioc/PropertyInjectionSample/CarLibrary2/Car.cs

http://github.com/philiplaureano/LinFu · C# · 56 lines · 47 code · 9 blank · 0 comment · 8 complexity · 4609075c960d16b4c056e3415d4c9158 MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using CarLibrary2;
  5. using LinFu.IoC;
  6. using LinFu.IoC.Configuration;
  7. using LinFu.IoC.Interfaces;
  8. namespace CarLibrary2
  9. {
  10. [Implements(typeof(IVehicle), LifecycleType.OncePerRequest)]
  11. public class Car : IVehicle, IInitialize
  12. {
  13. private IEngine _engine;
  14. private IPerson _person;
  15. public IEngine Engine
  16. {
  17. get { return _engine; }
  18. set { _engine = value; }
  19. }
  20. public IPerson Driver
  21. {
  22. get { return _person; }
  23. set { _person = value; }
  24. }
  25. public void Move()
  26. {
  27. if (_engine == null || _person == null)
  28. return;
  29. _engine.Start();
  30. Console.WriteLine("{0} says: I’m moving!", _person.Name);
  31. }
  32. public void Park()
  33. {
  34. if (_engine == null || _person == null)
  35. return;
  36. _engine.Stop();
  37. Console.WriteLine("{0} says: I’m parked!", _person.Name);
  38. }
  39. #region IInitialize Members
  40. public void Initialize(IServiceContainer container)
  41. {
  42. _engine = container.GetService<IEngine>();
  43. _person = container.GetService<IPerson>();
  44. }
  45. #endregion
  46. }
  47. }