Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class BaseObject : IExtensibleObject<BaseObject>
- {
- private DateTime _startDate;
- private ExtensionCollection<BaseObject> _extensions;
- public DateTime StartDate
- {
- get { return _startDate; }
- set { _startDate = value; }
- }
- public BaseObject()
- {
- StartDate = DateTime.Now;
- _extensions = new ExtensionCollection<BaseObject>(this);
- }
- #region IExtensibleObject<BaseObject> Members
- public IExtensionCollection<BaseObject> Extensions
- {
- get
- {
- return _extensions;
- }
- }
- #endregion
- }
- public class DateTimeConverterExtension : IExtension<BaseObject>
- {
- private BaseObject _owner;
- #region IExtension<BaseObject> Members
- public void Attach(BaseObject owner)
- {
- _owner = owner;
- _owner.StartDate = owner.StartDate.ToUniversalTime();
- }
- public void Detach(BaseObject owner)
- {
- _owner.StartDate = _owner.StartDate.ToLocalTime();
- }
- #endregion
- }
- class Program
- {
- static void Main(string[] args)
- {
- BaseObject obj = new BaseObject();
- Console.WriteLine("Local Time: "+obj.StartDate);
- obj.Extensions.Add(new DateTimeConverterExtension());
- Console.WriteLine("UTC: "+obj.StartDate);
- DateTimeConverterExtension ext = obj.Extensions.Find<DateTimeConverterExtension>();
- obj.Extensions.Remove(ext);
- Console.WriteLine("Local Time: "+obj.StartDate);
- }
- }
Add Comment
Please, Sign In to add comment