FastQuant.ParameterHelper.GetParameters C# (CSharp) Method

GetParameters() public method

public GetParameters ( string name, object obj ) : ParameterList
name string
obj object
return ParameterList
        public ParameterList GetParameters(string name, object obj)
        {
            var parameterList = new ParameterList() {Name = name};
            var pred = new Predicate<Attribute>(a =>
            {
                var t = a.GetType();
                return t.FullName.Contains("ComponentModel") && t.Name != "PropertyTabAttribute" && t.Name != "ToolboxItemAttribute";
            });
            foreach (var info in obj.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))
            {
                if (info.CanRead && info.GetCustomAttribute(typeof(TypeConverterAttribute)) == null)
                {
                    var list = info.GetCustomAttributes().Where(p => pred(p)).ToList();
                    if (!info.CanWrite)
                    {
                        var item = new ReadOnlyAttribute(true);
                        if (!list.Contains(item))
                            list.Add(item);
                    }
                    parameterList.Add(new Parameter(info.Name, info.GetValue(obj), info.PropertyType.AssemblyQualifiedName, list.ToArray()));
                }
            }
            var fields = obj.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public).Where(f => f.GetCustomAttribute(typeof(TypeConverterAttribute)) == null);
            foreach (var param in fields.Select(f => new Parameter(f.Name, f.GetValue(obj), f.FieldType.AssemblyQualifiedName, f.GetCustomAttributes().Where(a => pred(a)).ToArray())))
                parameterList.Add(param);

            return parameterList;
        }