/// <summary> /// Creates the value. /// </summary> /// <param name="value">The value.</param> /// <returns></returns> protected override object CreateValue(string value) { IList <string> items = TagExpander.SplitItemList(value); Array a = Array.CreateInstance(ItemType, items.Count); for (int i = 0; i < items.Count; i++) { a.SetValue(base.CreateValue(items[i]), i); } return(a); }
protected internal override void Prepare(TagBatchDefinition batchDefinition, int offset) { InitPreparation(batchDefinition, offset); List <ValuePart> parts = new List <ValuePart>(); foreach (string item in TagExpander.SplitItemList(Definition)) { ValueItem[] vi = PrepareString(batchDefinition, item, PrepareMode.List); if (vi.Length == 1) { ValueItem v = vi[0]; ItemValueItem ivi; StringValueItem svi; if (null != (ivi = v as ItemValueItem)) { if (string.IsNullOrEmpty(ivi.Separator) || ivi.Separator.Trim() == ";") { parts.Add(new ItemValuePart(ivi)); continue; } } else if (null != (svi = v as StringValueItem)) { // TODO: Shortcut single string value parts.Add(new ConstantValuePart(svi.Value)); continue; } } parts.Add(new DynamicValuePart(vi)); } _parts = parts.ToArray(); }