Aqueduct.Configuration.Parsers.ListSettingParser.Parse C# (CSharp) Method

Parse() public method

public Parse ( string raw, Type settingType ) : object
raw string
settingType System.Type
return object
        public object Parse(string raw, Type settingType)
        { 
            Type[] typeGenericArgs = settingType.GetGenericArguments();
            IList list = Activator.CreateInstance(typeof(List<>).MakeGenericType(typeGenericArgs)) as IList;

            if (!raw.IsNullOrEmpty())
            {
                string wrappedRaw = String.Format("<root>{0}</root>", raw);
                XDocument doc = XDocument.Parse(wrappedRaw);
                var items = from item in doc.Root.Descendants()
                            select item.Value;

                ISettingParser elementParser = GetElementParser(settingType, typeGenericArgs[0]);
                foreach (string item in items)
                {
                    list.Add(elementParser.Parse(item, typeGenericArgs[0]));
                }
            }

            return CreateReadOnlyCollection(typeGenericArgs, list);
        }