public virtual void AddDynamicFields(XmlNode configNode)
{
Assert.ArgumentNotNull(configNode, "configNode");
var type = XmlUtil.GetAttribute("type", configNode);
var fieldName = XmlUtil.GetAttribute("name", configNode);
var storageType = XmlUtil.GetAttribute("storageType", configNode);
var indexType = XmlUtil.GetAttribute("indexType", configNode);
var vectorType = XmlUtil.GetAttribute("vectorType", configNode);
var boost = XmlUtil.GetAttribute("boost", configNode);
var field = ReflectionUtil.CreateObject(type);
if (field == null || !(field is BaseDynamicField)) return;
var dynamicField = field as BaseDynamicField;
dynamicField.SetStorageType(storageType);
dynamicField.SetIndexType(indexType);
dynamicField.SetVectorType(vectorType);
dynamicField.SetBoost(boost);
dynamicField.FieldKey = fieldName.ToLowerInvariant();
DynamicFields.Add(dynamicField);
}