public void RegisterProperty(Type targetType, ItemProperty property)
        {
            if (!typeof(IExtendedDataItem).IsAssignableFrom(targetType))
            {
                throw new InvalidOperationException("The type '" + targetType + "' does not implement the IExtendedDataItem interface and cannot be extended with new properties");
            }

            ClassDataType ctype = (ClassDataType)GetConfigurationDataType(targetType);

            ctype.AddProperty(property);
        }
        public void RegisterProperty(Type targetType, string name, Type propertyType, bool isExternal, bool skipEmpty)
        {
            if (!typeof(IExtendedDataItem).IsAssignableFrom(targetType))
            {
                throw new InvalidOperationException("The type '" + targetType + "' does not implement the IExtendedDataItem interface and cannot be extended with new properties");
            }

            ClassDataType ctype = (ClassDataType)GetConfigurationDataType(targetType);
            ItemProperty  prop  = new ItemProperty(name, propertyType);

            prop.Unsorted   = true;
            prop.IsExternal = isExternal;
            prop.SkipEmpty  = skipEmpty;
            ctype.AddProperty(prop);
        }