Guest User

Untitled

a guest
Jun 23rd, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. public class BaseObject : IExtensibleObject<BaseObject>
  2. {
  3. private DateTime _startDate;
  4. private ExtensionCollection<BaseObject> _extensions;
  5.  
  6. public DateTime StartDate
  7. {
  8. get { return _startDate; }
  9. set { _startDate = value; }
  10. }
  11.  
  12. public BaseObject()
  13. {
  14. StartDate = DateTime.Now;
  15. _extensions = new ExtensionCollection<BaseObject>(this);
  16. }
  17.  
  18. #region IExtensibleObject<BaseObject> Members
  19.  
  20. public IExtensionCollection<BaseObject> Extensions
  21. {
  22. get
  23. {
  24. return _extensions;
  25. }
  26. }
  27.  
  28. #endregion
  29. }
  30.  
  31. public class DateTimeConverterExtension : IExtension<BaseObject>
  32. {
  33. private BaseObject _owner;
  34.  
  35. #region IExtension<BaseObject> Members
  36.  
  37. public void Attach(BaseObject owner)
  38. {
  39. _owner = owner;
  40. _owner.StartDate = owner.StartDate.ToUniversalTime();
  41. }
  42.  
  43. public void Detach(BaseObject owner)
  44. {
  45. _owner.StartDate = _owner.StartDate.ToLocalTime();
  46. }
  47.  
  48. #endregion
  49. }
  50.  
  51. class Program
  52. {
  53. static void Main(string[] args)
  54. {
  55. BaseObject obj = new BaseObject();
  56. Console.WriteLine("Local Time: "+obj.StartDate);
  57.  
  58. obj.Extensions.Add(new DateTimeConverterExtension());
  59.  
  60.  
  61. Console.WriteLine("UTC: "+obj.StartDate);
  62.  
  63. DateTimeConverterExtension ext = obj.Extensions.Find<DateTimeConverterExtension>();
  64. obj.Extensions.Remove(ext);
  65.  
  66. Console.WriteLine("Local Time: "+obj.StartDate);
  67. }
  68. }
Add Comment
Please, Sign In to add comment