public override void EndInitialization()
 {
     if (typeof(T) == typeof(ChangeDependencyObject))
     {
         foreach (T item in this)
         {
             ChangeDependencyObject cdo = item as ChangeDependencyObject;
             if (cdo != null)
             {
                 cdo.EndInitialization();
             }
         }
     }
     base.EndInitialization();
 }
        public virtual void AcceptChanges()
        {
            if (_log.IsDebugEnabled)
            {
                _log.DebugFormat("Starting {0}", MethodBase.GetCurrentMethod().ToString());
            }

            try
            {
                Type[] t = new Type[0];

                if (this.GetType().GetConstructor(t) != null)
                {
                    Original = this.GetType().GetInstance() as ChangeDependencyObject;
                }
            }
            catch (System.ArgumentException ex)
            {
                if (_log.IsWarnEnabled)
                {
                    _log.Warn("Error initializing \"Original\"", ex);
                }
            }
            if (Original != null)
            {
                Original.BeginInitialization();
                Original.CopyProperties(this);
                Original.EndInitialization();
            }

            DoProcessValidation();

            Changed = false;



            if (_log.IsDebugEnabled)
            {
                _log.DebugFormat("Ending {0}", MethodBase.GetCurrentMethod().ToString());
            }
        }