Ext.Net.StoreDataBound.ResolveDataSource C# (CSharp) Method

ResolveDataSource() private method

private ResolveDataSource ( object o, string data_member ) : IEnumerable
o object
data_member string
return IEnumerable
        public static IEnumerable ResolveDataSource(object o, string data_member)
        {
            IEnumerable ds;

            ds = o as IEnumerable;

            if (ds != null)
            {
                return ds;
            }

            IListSource ls = o as IListSource;

            if (ls == null)
            {
                return null;
            }

            IList member_list = ls.GetList();

            if (!ls.ContainsListCollection)
            {
                return member_list;
            }

            ITypedList tl = member_list as ITypedList;

            if (tl == null)
            {
                return null;
            }

            PropertyDescriptorCollection pd = tl.GetItemProperties(new PropertyDescriptor[0]);

            if (pd == null || pd.Count == 0)
            {
                throw new HttpException("The selected data source did not contain any data members to bind to");
            }

            PropertyDescriptor member_desc = data_member == "" ?
                pd[0] :
                pd.Find(data_member, true);

            if (member_desc != null)
            {
                ds = member_desc.GetValue(member_list[0]) as IEnumerable;
            }

            if (ds == null)
            {
                throw new HttpException("A list corresponding to the selected DataMember was not found");
            }

            return ds;
        }