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();
}