private static void AppendParameters(DescriptionBuilder sb, NetBrowserManager manager, ParameterInfo[] parameters) { bool first = true; foreach (ParameterInfo parameter in parameters) { if (first) { first = false; } else { sb.Append(", "); } if (parameter.IsOptional) { sb.Append("["); } NetTypeBrowserInfo.WriteParameterType(manager, sb, parameter, true); sb.Append(" "); sb.Append(parameter.Name); if (parameter.IsOptional) { sb.Append("]"); } } }
internal NetAssemblyBrowserInfo(Assembly assembly, NetBrowserManager manager) { Debug.Assert(assembly != null && manager != null, "assembly != null && manager != null"); m_assembly = assembly; m_manager = manager; }
private void CreateRemoteManagerObject() { m_manager = (NetBrowserManager)m_remoteDomain.CreateInstanceAndUnwrap( typeof(NetBrowserManager).Assembly.FullName, typeof(NetBrowserManager).FullName); Debug.Assert(m_manager != null, "m_manager != null"); m_manager.SetSettings(Settings); }
private void AppendConstructor(DescriptionBuilder sb, NetBrowserManager manager, ConstructorInfo constructor) { AppendMethodAttribute(sb, constructor, MethodAttributes.Static); sb.AppendName(constructor.DeclaringType.Name); sb.Append(" ( "); AppendParameters(sb, manager, constructor.GetParameters()); sb.Append(" )"); }
private void AppendEvent(DescriptionBuilder sb, NetBrowserManager manager, EventInfo eventInfo) { sb.Append(Settings.GetKeyword(MemberTypes.Event)); sb.Append(" "); NetTypeBrowserInfo.AppendParameterTypeDisplayName(manager, sb, eventInfo.EventHandlerType, false, true); sb.Append(" "); sb.AppendName(eventInfo.Name); }
internal DescriptionText GetDescription(NetBrowserManager manager, NetTypeBrowserInfo type) { if (m_description == null) { m_description = GetDescriptionInternal(manager, type); Debug.Assert(m_description != null, "m_description != null"); } return(m_description); }
public void DisplayAssembly(string filePath, bool showMembers, bool showCheckBoxes) { if (filePath == null) { throw new ArgumentNullException("filePath"); } NetBrowserManager manager = new NetBrowserManager(); browser.Settings = new NetBrowserSettings(showMembers, showCheckBoxes, Net.Language.CSharp); browser.Manager = manager; browser.Repositories = new IRepositoryBrowserInfo[] { manager.GetAssemblyInfo(filePath) }; SetButtonEnabled(DialogResult.OK, false); }
private void AppendProperty(DescriptionBuilder sb, NetBrowserManager manager, PropertyInfo property) { // Properties have many of the same attributes as methods, but these attributes are declared // on the accessors, not on the properties themselves. MethodInfo[] accessors = property.GetAccessors(true); Debug.Assert(accessors.Length > 0, "Unable to get the accessors for property '" + property.DeclaringType.ToString() + "." + property.Name + "' - this property should not have been displayed."); AppendMethodAttributes(sb, accessors[0]); NetTypeBrowserInfo.AppendParameterTypeDisplayName(manager, sb, property.PropertyType, false, true); sb.Append(" "); sb.AppendName(property.Name); if (property.CanRead) { if (property.CanWrite) { sb.Append(" [ get, set ]"); } else { sb.Append(" [ get ]"); } } else if (property.CanWrite) { sb.Append(" [ set ]"); } else { Debug.Fail("Property '" + property.Name + "' is not readable and not writeable."); } // Show indexer parameters as well (which the VS.NET object browser doesn't do). ParameterInfo[] indexers = property.GetIndexParameters(); if (indexers.Length > 0) { sb.Append(" ( "); AppendParameters(sb, manager, indexers); sb.Append(" )"); } }
private void AppendField(DescriptionBuilder sb, NetBrowserManager manager, FieldInfo field) { AppendFieldAttribute(sb, field, FieldAttributes.Static); AppendFieldAttribute(sb, field, FieldAttributes.InitOnly); AppendFieldAttribute(sb, field, FieldAttributes.Literal); NetTypeBrowserInfo.AppendParameterTypeDisplayName(manager, sb, field.FieldType, false, true); sb.Append(" "); sb.AppendName(field.Name); // Show values of constants, static readonly variables and enum identifiers. if (field.IsLiteral || (field.IsStatic && field.IsInitOnly)) { sb.Append(" = "); sb.Append(GetConstantDisplayValue(field.GetValue(null), true)); } }
private void AppendMethod(DescriptionBuilder sb, NetBrowserManager manager, MethodInfo method) { AppendMethodAttributes(sb, method); NetTypeBrowserInfo.AppendParameterTypeDisplayName(manager, sb, method.ReturnType, false, true); sb.Append(" "); if (MethodIsOperator(method)) { sb.AppendName(Settings.GetKeyword(method.Name)); } else { sb.AppendName(method.Name); } sb.Append(" ( "); AppendParameters(sb, manager, method.GetParameters()); sb.Append(" )"); }
private DescriptionText GetDescriptionInternal(NetBrowserManager manager, NetTypeBrowserInfo type) { DescriptionBuilder sb = new DescriptionBuilder(true); sb.Append(Settings.GetKeyword(GetMemberAccess(m_memberInfo))); sb.Append(" "); switch (m_memberInfo.MemberType) { case MemberTypes.Constructor: AppendConstructor(sb, manager, (ConstructorInfo)m_memberInfo); break; case MemberTypes.Method: AppendMethod(sb, manager, (MethodInfo)m_memberInfo); break; case MemberTypes.Property: AppendProperty(sb, manager, (PropertyInfo)m_memberInfo); break; case MemberTypes.Field: AppendField(sb, manager, (FieldInfo)m_memberInfo); break; case MemberTypes.Event: AppendEvent(sb, manager, (EventInfo)m_memberInfo); break; default: throw new ApplicationException("Unsupported member type: '" + m_memberInfo.MemberType.ToString() + "'."); } sb.EndFirstLine(); sb.Append(@" Member of "); sb.AppendLink(type.DisplayName, type); sb.EndLine(); return(sb.GetText()); }
internal static void WriteParameterType(NetBrowserManager manager, DescriptionBuilder sb, ParameterInfo parameter, bool link) { NetBrowserSettings settings = (NetBrowserSettings)manager.Settings; if (parameter.IsOut) { sb.Append(settings.GetKeyword(ParameterAttributes.Out)); sb.Append(" "); AppendParameterTypeDisplayName(manager, sb, parameter.ParameterType, true, link); } else { if (parameter.IsDefined(typeof(ParamArrayAttribute), false)) { sb.Append(settings.GetKeyword(typeof(ParamArrayAttribute))); sb.Append(" "); } AppendParameterTypeDisplayName(manager, sb, parameter.ParameterType, false, link); } }
internal static void AppendParameterTypeDisplayName(NetBrowserManager manager, DescriptionBuilder sb, Type type, bool ignoreRef, bool link) { NetBrowserSettings settings = (NetBrowserSettings)manager.Settings; if (type.HasElementType) { if (type.IsByRef) { if (!ignoreRef) { sb.Append(settings.GetKeyword("Type.IsByRef")); sb.Append(" "); } AppendParameterTypeDisplayName(manager, sb, type.GetElementType(), ignoreRef, link); } else if (type.IsArray) { AppendParameterTypeDisplayName(manager, sb, type.GetElementType(), ignoreRef, link); sb.Append(settings.GetKeyword(NetBrowserSettings.KeywordArrayStart)); int dimensions = type.GetArrayRank(); for (int index = 1; index < dimensions; index++) { sb.Append(","); } sb.Append(settings.GetKeyword(NetBrowserSettings.KeywordArrayEnd)); } else if (type.IsPointer) { AppendParameterTypeDisplayName(manager, sb, type.GetElementType(), ignoreRef, link); sb.Append(" *"); } else { throw new ApplicationException("Type '" + type.Name + "' has element type, but is not a" + " reference type, array or pointer."); } } else { string keyword = ((NetBrowserSettings)manager.Settings).GetKeyword(type.AssemblyQualifiedName); if (keyword == null) { if (link) { sb.AppendLink(GetTypeDisplayFullName(type), manager.GetTypeInfoForLink( type.Assembly.Location, type.FullName)); } else { sb.Append(GetTypeDisplayFullName(type)); } } else { sb.Append(keyword); // We don't want to make keywords into links } } }