/// <summary> /// Initialises a DynamicType object using details from a ITypeDescriptorCollection object. /// </summary> /// <param name="node">A DynamicType object to initialise.</param> /// <param name="entityFields">A ITypeDescriptorCollection object containing the details of the fields.</param> public static void Initialise(this DynamicType node, ITypeDescriptorCollection entityFields) { // Add an entry for each field in entityFields and initialise its value to an appropriate default. foreach (ITypeDescriptor fieldDefinition in entityFields) { Type fieldType = Type.GetType(fieldDefinition.TypeName, true, true); object fieldValue; if (fieldType == typeof(string)) { fieldValue = string.Empty; } else if (fieldType == typeof(DateTime)) { fieldValue = new DateTime(1970, 1, 1); } else { fieldValue = Activator.CreateInstance(fieldType); } node.Add(fieldDefinition.Name, fieldValue); } }