Source/Config/PropertyChanged.cs

using Microsoft.SqlServer.Management.Smo;
using System;
using System.Linq;
using SQL.SMO.Cmdlets;
using SQL.SMO.Framework;
 
namespace SQL.SMO.Config
{
    public class PropertyChanged
    {
        private object _old;
        private object _new;
        private SMOProperty _cfgProp;
 
        public string Name { get { return _cfgProp.Name; } }
        public object OldValue { get { return _old; } }
        public object NewValue { get { return _new; } }
        internal SMOProperty ConfigProperty { get { return _cfgProp; } }
 
        public PropertyChanged(SMOProperty smoProperty , object oldValue, object newValue)
        {
            _old = oldValue;
            _new = newValue;
            _cfgProp = smoProperty;
        }
 
        internal PropertyChanged(SMOProperty smoProperty, object oldValue)
        {
            _cfgProp = smoProperty;
        }
 
        internal protected PropertyChanged(string property)
        {
            _cfgProp = SharedCmdlet.GetPropertyValue(property);
        }
 
        internal PropertyChanged(ConfigProperty configProperty)
        {
            _cfgProp = new SMOProperty(configProperty);
        }
 
        internal void SetOldValue(object value)
        {
            _old = value;
        }
        internal void SetNewValue(object value)
        {
            _new = value;
        }
    }
}