OleViewDotNet.TypedObjectViewer.LoadDispatch C# (CSharp) Метод

LoadDispatch() приватный Метод

private LoadDispatch ( ) : void
Результат void
        private void LoadDispatch()
        {
            listViewMethods.Columns.Add("Name");
            listViewMethods.Columns.Add("Return");
            listViewMethods.Columns.Add("Params");
            listViewProperties.Columns.Add("Name");
            listViewProperties.Columns.Add("Type");
            listViewProperties.Columns.Add("Value");
            listViewProperties.Columns.Add("Writeable");

            lblName.Text = "Name: " + m_dispType.Name;
            MemberInfo[] members = m_dispType.GetMembers();
            foreach (MemberInfo info in members)
            {
                if (info.MemberType == MemberTypes.Method)
                {
                    MethodInfo mi = (MethodInfo)info;

                    if (!mi.IsSpecialName)
                    {
                        ListViewItem item = listViewMethods.Items.Add(mi.Name);
                        item.Tag = mi;
                        List<string> pars = new List<string>();
                        item.SubItems.Add(mi.ReturnType.ToString());
                        ParameterInfo[] pis = mi.GetParameters();

                        foreach (ParameterInfo pi in pis)
                        {
                            string strDir = "";

                            if (pi.IsIn)
                            {
                                strDir += "in";
                            }

                            if (pi.IsOut)
                            {
                                strDir += "out";
                            }

                            if (strDir.Length == 0)
                            {
                                strDir = "in";
                            }

                            if (pi.IsRetval)
                            {
                                strDir += " retval";
                            }

                            if (pi.IsOptional)
                            {
                                strDir += " optional";
                            }

                            pars.Add(String.Format("[{0}] {1} {2}", strDir, pi.ParameterType.Name, pi.Name));
                        }

                        item.SubItems.Add(String.Join(", ", pars));
                    }
                }
                else if (info.MemberType == MemberTypes.Property)
                {
                    PropertyInfo pi = (PropertyInfo)info;
                    ListViewItem item = listViewProperties.Items.Add(pi.Name);
                    item.Tag = pi;
                    item.SubItems.Add(pi.PropertyType.ToString());

                    object val = null;

                    try
                    {
                        if (pi.CanRead)
                        {
                            val = pi.GetValue(m_pObject, null);
                        }
                    }
                    catch (Exception)
                    {
                        val = null;
                    }

                    if (val != null)
                    {
                        item.SubItems.Add(val.ToString());
                    }
                    else
                    {
                        item.SubItems.Add("<null>");
                    }

                    item.SubItems.Add(pi.CanWrite.ToString());
                }
            }

            listViewMethods.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
            listViewProperties.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
            listViewMethods.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
            listViewProperties.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);

            listViewMethods.ListViewItemSorter = new ListItemComparer(0);
            listViewMethods.Sort();
            listViewProperties.ListViewItemSorter = new ListItemComparer(0);
            listViewProperties.Sort();
        }