/// <summary>
        /// When overridden in a derived class, gets the current value of the property on a component.
        /// </summary>
        /// <param name="component">The component with the property for which to retrieve the value.</param>
        /// <returns>
        /// The value of a property for a given component.
        /// </returns>
        public override object GetValue(object component)
        {
            if (_propertyInfo == null)
            {
                if (_viewModel.IsPropertyRegistered(_propertyName))
                {
                    return(_viewModel.GetValue(_propertyName));
                }

                string error = string.Format("Property '{0}' is not a real property, nor an exposed property", _propertyName);
                Log.Error(error);
                throw new NotSupportedException(error);
            }

            return(_propertyInfo.GetValue(_viewModel, null));
        }