home *** CD-ROM | disk | FTP | other *** search
- <%
- /*=====================================================================
- File: Browser.aspx
-
- Summary: Brief summary of the file contents and purpose.
-
- ---------------------------------------------------------------------
- This file is part of the Microsoft NGWS SDK Code Samples.
-
- Copyright (C) 2000 Microsoft Corporation. All rights reserved.
-
- This source code is intended only as a supplement to Microsoft
- Development Tools and/or on-line documentation. See these other
- materials for detailed information regarding Microsoft code samples.
-
- THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
- KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
- PARTICULAR PURPOSE.
- =====================================================================*/
-
- %>
-
- <%@ Page Language="C#" %>
- <%@ Import Namespace="System.Data.XML"%>
- <%@ Import Namespace="System.Data.XML.DOM"%>
- <%@ Import Namespace="System.Reflection" %>
- <%@ Import Namespace="System.Collections" %>
- <%@ Import Namespace="System.IO" %>
- <%@ Import Namespace="System.Threading" %>
- <%@ Import Namespace="System.Text" %>
- <%@ Import Namespace="LangUtil" %>
-
-
- <Script runat=server>
-
- // Set up variables global to class.
-
- public NativeConstructorInfo[] Constructors = null;
- public NativeFieldInfo[] Fields = null;
- public NativeEventInfo[] Events = null;
- public NativeMethodInfo[] Methods = null;
- public System.Collections.ArrayList Properties = new System.Collections.ArrayList();
- public System.Collections.ArrayList Interfaces = new System.Collections.ArrayList();
- public NativeLangType ThisLangType = null;
-
- public String ClassName = "";
- public String Description = "";
- public String ContentVersion = "";
- public String DocBuildTimestamp = "";
- public Type[] Hierarchy = null;
-
- public Type ThisType = null;
-
- public static String ClassViewPath = null;
-
-
-
- /****************************************************************************************
-
- Description GetDescriptionFromXML(Type myClass)
-
- This method takes a Type for the class and returns
- a string representing either the description of the class
- or a string message.
-
- *****************************************************************************************/
-
- public static String GetDescriptionFromXML(Type myClass){
-
- String Description = String.Format("<pre>This class resides in {0}</pre>", Assembly.GetAssembly(myClass).GetName());
-
- /* This method will retrieve some content from an XML file, if it exists.
- // The sample does not currently include such content.
- // confirm this class lives in a namespace
- if (myClass.FullName.LastIndexOf(".") != -1) {
-
- String myPath = GetUEPath(myClass.FullName);
-
- if (!(File.FileExists(myPath)))
- Description = Description + "CONTENT NOT AVAILABLE.</pre>";
- else{
- XmlDocument XMLData = new XmlDocument();
-
- // XmlDocuments require an XmlReader to load if you don't have a DataSet.
- // load the XmlReader for this file
- XMLData.Load(new XmlReader(myPath));
-
- IDocument XMLdoc = XMLData.DomDocument;
- // make sure loading the file encounters no complications
- Monitor.Enter(XMLdoc);
- try{
- try{
- XMLdoc.load(myPath);
- Description = Description
- + "Content Updated "
- + XMLdoc.documentElement.attributes.getNamedItem("timestamp").nodeValue
- + ".</pre>";
- Description = Description + XMLdoc.documentElement.childNodes.item(0).text;
- }
- catch(Exception e){
- // catch validation errors
- Description = Description + "CONTENT NOT AVAILABLE.</pre>";
- }
- }
- finally{
- Monitor.Exit(XMLdoc);
- }
- }
- }
- */
- return Description;
- }
-
- /*******************************************************************************************
-
- GetPath takes a string and returns a string for the path to the descriptive content.
-
- *******************************************************************************************/
-
- public static String GetUEPath(String TempName){
- int index;
- StringBuilder myPath = new StringBuilder(ClassViewPath);
- while ((index = TempName.IndexOf(".")) != -1){
- myPath.Append("\\" + TempName.Substring(0, index));
- TempName = TempName.Remove(0, index + 1);
- }
-
- myPath.Append("\\" + TempName + ".xml");
- return myPath.ToString();
- }
-
-
- /************************************************************************************
-
- MakeClassLink takes a NativeLangType and a bool
- and returns a string that represents an <A HREF ></A> string for
- the class. The FullName is displayed if the FullName argument is true.
-
- ************************************************************************************/
-
- public String MakeClassLink(NativeLangType NatLangType, bool FullName){
- StringBuilder link = new StringBuilder("<A HREF=\"Browser.aspx?class=");
- link.Append(NatLangType.FullClassName);
- link.Append("\" Title=\"");
- link.Append(NatLangType.FullClassName);
- link.Append("\">");
- if (FullName)
- link.Append(NatLangType.FullClassName);
- else
- link.Append(NatLangType.ClassName);
- link.Append("</A>");
-
- return link.ToString();
- return NatLangType.FullClassName;
- }
-
- /* one-off method to make the name of this class a link to the constructor for this class.
- Used only in MakeSimpleClassConst();
- */
-
- public String MakeConstMemberLink(NativeLangType NatLangType, NativeConstructorInfo NativeConstInfo){
- StringBuilder link = new StringBuilder("<A HREF=\"member.aspx?class=");
- link.Append(NatLangType.FullClassName);
- link.Append("&member=");
- link.Append(NativeConstInfo.Name);
- link.Append("&type=constructor");
- link.Append("\">");
- link.Append("<B>" + NatLangType.ClassName + "</B>");
- link.Append("</A>");
-
- return link.ToString();
- }
-
-
- /************************************************************************************
-
- MakeLangSimpleClassConst takes a NativeConstructorInfo and returns a string
- that represents a simple block to display for a constructor. Does not display
- variables or "exotic" qualifiers/access fields.
-
- *************************************************************************************/
-
- public String MakeLangSimpleClassConst(NativeConstructorInfo LangConstInfo){
- StringBuilder Simple = new StringBuilder(String.Empty);
- if (LangConstInfo.ThisConstructorInfo.IsStatic)
- Simple.Append("<span class=\"StaticIcon\" style=\"color:red\" title=\"Static member\">[S]</span> ");
- if (LangConstInfo.ThisConstructorInfo.DeclaringType != ThisType){
- Response.Write("<span class=\"Inherited\" style=\"color:red\" title=\"Inherited from: " + LangConstInfo.ThisConstructorInfo.DeclaringType.FullName + "\">[I]</span> ");
- }
-
- if (LangConstInfo.Name.Equals(".cctor")){
- Simple.Append(".cctor");
- }
- else {
- Simple.Append(MakeConstMemberLink(ThisLangType, LangConstInfo));
- }
- Simple.Append(" (");
- for (int j = 0; j < LangConstInfo.Parameters.Count; ++j) {
- if (((NativeLangType)(LangConstInfo.Parameters[j])).IsByRef){
- Simple.Append("ByRef ");
- }
-
- Simple.Append(MakeClassLink((NativeLangType)(LangConstInfo.Parameters[j]), false));
- if (((NativeLangType)(LangConstInfo.Parameters[j])).ThisType.IsArray){
- Simple.Append("[]");
- }
- if (((NativeLangType)(LangConstInfo.Parameters[j])).IsByRef){
- Simple.Append("&");
- }
- if (((NativeLangType)(LangConstInfo.Parameters[j])).IsPointer){
- Simple.Append("*");
- }
- Simple.Append(" <I>");
- Simple.Append(((NativeLangType)LangConstInfo.Parameters[j]).ParamVarName);
- Simple.Append("</I>");
- if (j != (LangConstInfo.Parameters.Count - 1)) {
- Simple.Append(", ");
- }
- else{
- if (LangConstInfo.VarArgs)
- Simple.Append(", ...");
- }
- }
- Simple.Append(")");
- return Simple.ToString();
- }
-
- /*************************************************************************************
-
-
-
-
- **************************************************************************************/
-
- public String MakeLangSimpleClassMethod(NativeMethodInfo MethLangInfo){
- StringBuilder Simple = new StringBuilder(400);
- if (MethLangInfo.ThisMethodInfo.IsStatic)
- Simple.Append("<span class=\"StaticIcon\" style=\"color:red\" title=\"Static member\">[S]</span> ");
- if (MethLangInfo.ThisMethodInfo.DeclaringType != ThisType)
- {
- Simple.Append("<A class=\"Inherited\" HREF=\""
- + "browser.aspx?class="
- + MethLangInfo.ThisMethodInfo.DeclaringType.FullName
- + "\" title=\"Inherited from: "
- + MethLangInfo.ThisMethodInfo.DeclaringType.FullName
- + "\">[I]</A> "
- );
- }
-
- // Bug: this name isn't filtered.
- Simple.Append(MethLangInfo.ReturnLangType.ClassName);
- if (MethLangInfo.ReturnLangType.IsArray)
- Simple.Append("[]");
- if (MethLangInfo.ReturnLangType.IsPointer)
- Simple.Append("*");
- if (MethLangInfo.ReturnLangType.IsByRef)
- Simple.Append("&");
-
- Simple.Append(" <A HREF=\"Member.aspx?class="
- + ThisLangType.FullClassName
- + "&member="
- + MethLangInfo.Name
- + "&type=method\"><B>"
- + MethLangInfo.Name
- + "</B></A>");
- Simple.Append(" (");
- for (int j = 0; j < MethLangInfo.Parameters.Count; ++j) {
-
- Simple.Append(MakeClassLink((NativeLangType)(MethLangInfo.Parameters[j]), false));
- if (((NativeLangType)(MethLangInfo.Parameters[j])).ThisType.IsArray){
- Simple.Append("[]");
- }
- if (((NativeLangType)(MethLangInfo.Parameters[j])).IsPointer){
- Simple.Append("*");
- }
- if (((NativeLangType)(MethLangInfo.Parameters[j])).IsByRef){
- Simple.Append("&");
- }
-
- Simple.Append(" <I>");
- Simple.Append(((NativeLangType)MethLangInfo.Parameters[j]).ParamVarName);
- Simple.Append("</I>");
- if (j != (MethLangInfo.Parameters.Count - 1)) {
- Simple.Append(", ");
- }
- else{
- if (MethLangInfo.VarArgs)
- Simple.Append(", ...");
- }
- }
- Simple.Append(")");
- return Simple.ToString();
- }
-
- /*
-
- Method returns a Type whose friendly name is a case-insensitive match with
- what the user entered. It also writes to the TextWriter stream, in this case
- the HtmlTextWriter associated with this page, the names of the choices you have if
- you have more than one. The modules it searches through are hard-coded.
-
- */
-
- public Type PluralTypesGetShortNameTypeInsensitive(String ClassName, TextWriter OutWriter){
-
-
- Type ThisType = null;
- Module ThisMod = null;
- Module[] TheseModules;
- bool FoundTypes = false;
- int iNumFoundTypes = 0;
- Type[] CurrentModTypes = null;
- System.Collections.ArrayList TypeLinkStrings = new System.Collections.ArrayList();
- System.Collections.ArrayList Assemblies = (ArrayList)Session["Assems"];
-
- for (int i = 0; i < Assemblies.Count; ++i){
- try{
- Assembly Temp = Assembly.Load((string)Assemblies[i]);
- if (Temp == null){
- Page.Response.Write("Run-time error: Assembly " + (string)Assemblies[i] + " refused to be loaded.<BR>");
- continue;
- }
- TheseModules = Temp.GetModules();
- if (TheseModules == null){
- continue;
- }
- else{
-
- for (int j = 0; j < TheseModules.Length; ++j){
- CurrentModTypes = TheseModules[j].GetTypes();
- for (int iTypeCount = 0; iTypeCount < CurrentModTypes.Length; ++iTypeCount){
- if (CurrentModTypes[iTypeCount] != null
- && CurrentModTypes[iTypeCount].IsPublic
- && (String.Compare(CurrentModTypes[iTypeCount].Name, ClassName, true) == 0)
- ){
- ++iNumFoundTypes;
- ThisType = CurrentModTypes[iTypeCount];
- if (!FoundTypes){
- FoundTypes = true;
- }
- TypeLinkStrings.Add(MakeClassLink(new NativeLangType(CurrentModTypes[iTypeCount]), true) + "<BR>");
- }
- }
- }
- }
- }
- catch(Exception Ex){
- continue;
- }
- }
- if (TypeLinkStrings.Count > 1){
- OutWriter.WriteLine("The following classes were found: <BR>");
- for (int iLinkCount = 0; iLinkCount < TypeLinkStrings.Count; ++iLinkCount)
- OutWriter.WriteLine((String)TypeLinkStrings[iLinkCount]);
- }
- return ThisType;
- }
-
-
-
- /***************************************************/
-
-
-
- // Use Load as the main for the Web request.
-
- void Page_Load(Object sender, EventArgs EvArgs){
- try{
- if (Request.Form.Count > 0){
- NameValueCollection FormSubmission = Request.Form;
- ClassName = FormSubmission["ThisClass"];
- }
- else{
- ClassName = Request.QueryString["class"];
- }
-
- // Determine path of this application
- ClassViewPath = Request.PhysicalApplicationPath;
- ClassViewPath = ClassViewPath.Remove(ClassViewPath.LastIndexOf('\\'), 1);
-
- // catch a misspelling in the input box and react appropriately
- try{
- ThisType = Type.GetType(ClassName, true);
- if (ThisType == null)
- throw new TypeLoadException(String.Format("Unable to load {0}.", ClassName));
- }
- catch(Exception e){
-
- if ((ThisType = PluralTypesGetShortNameTypeInsensitive(ClassName, Response.Output)) == null){
- Response.Write(String.Format("<p>Unable to load {0}. Is the spelling and case correct?</p>", ClassName));
- ClassName = "System.Object";
- ThisType = Type.GetType("System.Object", true);
- }
- else{
- ClassName = ThisType.Name;
- }
- }
-
-
- Description = GetDescriptionFromXML(ThisType);
-
- NativeLangType ThisOrderedType = new NativeLangType(ThisType);
- ThisLangType = ThisOrderedType;
-
- // Get Hierarchy
- LangUtil.HTMLHierTree TypeTree = new LangUtil.HTMLHierTree();
- Hierarchy = LangUtil.HTMLHierTree.GetTree(ThisType);
-
-
- // Obtain Class Interface Details
- Type [] myInterfaces = ThisType.GetInterfaces();
- for (int x=0; x < myInterfaces.Length; x++)
- Interfaces.Add(myInterfaces[x].Name);
-
- // Obtain Class Constructor Details
- Constructors = ThisOrderedType.OrderedNativeConstructors;
-
-
- // Obtain Class Method Details
- Methods = ThisOrderedType.OrderedNativeMethods;
-
- // Obtain Class Field Details
- Fields = ThisOrderedType.OrderedNativeFields;
-
- // Obtain Class Field Details
- Events = ThisOrderedType.OrderedNativeEvents;
-
- // Obtain Class Property Details
- for (int x=0; x < ThisOrderedType.OrderedProperties.Length; x++){
- try{
- NativePropertyInfo temp = new NativePropertyInfo(ThisOrderedType.OrderedProperties[x]);
- Properties.Add(temp);
- }
- catch(Exception Ex){
- throw new Exception("This happened in Properties loop.", Ex);
- continue;
- }
- }
-
- }
- catch(Exception Ex){
-
- Response.Write(Ex.GetType().Name + " caught: " + Ex.Message);
- Exception inner = Ex.InnerException;
- while (inner != null){
- Response.Write("<BR>InnerException is : "
- + inner.GetType().Name
- + " --> "
- + inner.Message);
- inner = inner.InnerException;
- }
- }
- } //END OF Load
-
- </Script>
- <HTML>
- <HEAD>
- <style type="text/css">
- @import url(backSDK4.css);
- </style>
- <style ID="PrivateStyle" type="text/css">
- .InAccessible{display:none};
- </style>
- <Title>ClassView: Microsoft NGWS SDK <%=""%></Title>
-
-
- </HEAD>
- <Script Language="JavaScript1.1">
- function DisplaySheets(){
- // alert(document.styleSheets.length.toString() + " style sheets.");
- }
- </Script>
- <Body onload="DisplaySheets()">
-
- <%
- /* Uncomment this to view the headers on the page.
-
- String[] keys, values;
-
- keys = Request.ServerVariables.AllKeys;
- values = Request.ServerVariables.All;
- Response.Output.WriteLine("<pre>");
- for(int i = 0; i < keys.Length; i++)
- {
- Response.Output.WriteLine("{0} -> {1}", keys[i], values[i]);
- }
- Response.Output.WriteLine("</pre><HR>");
-
- */
-
- %>
- <H2><%=ThisType.FullName%></H2>
-
- <%=Description%>
-
- <!-- START OF HIERARCHY -->
- <%
- int ObjectCount = 0;
- for (int i = 0; i < Hierarchy.Length; ++i) { %>
- <% if (i == 0) { %>
- <H4>Hierarchy</H4>
- <A Title="<%=Hierarchy[i].FullName%>" HREF="?class=<%=Hierarchy[i].FullName%>"><%=Hierarchy[i].Name%></A>
- <% ++ObjectCount;} %>
-
- <%
- if (i !=0 ) {
- if (Hierarchy[i].IsInterface) {
- Response.Write(" -- ");
- Response.Write(
- "<A Title="
- + Hierarchy[i].FullName
- + " HREF=\"?class="
- + Hierarchy[i].FullName
- + "\">"
- + Hierarchy[i].Name
- + "</A>"
- );
- }
- else {
- Response.Write("<BR>");
- for (int IndentCount = 0; IndentCount < ObjectCount; ++IndentCount)
- Response.Write(" ");
- ++ObjectCount;
-
- if (Hierarchy[i] != ThisType)
- Response.Write(
- "+ "
- + "<A Title="
- + Hierarchy[i].FullName
- + " HREF=\"?class="
- + Hierarchy[i].FullName
- + "\">"
- + Hierarchy[i].Name
- + "</A>");
- else {
- %> + <b><%=ThisType.Name%></b>
-
- <%
- }
- }
- }
- %>
-
- <% if (i == Hierarchy.Length - 1) { Response.Write(""); } %>
-
- <% }
- %>
- <!-- END OF HIERARCHY -->
- <!-- Start of Declaration -->
-
- <h4>Declarations</h4><pre><span style="color: blue">[C#]</span> <%=(new CSharpLangType(ThisType)).TextDeclaration%>
- <span style="color: blue">[Visual Basic]</span> <%=(new VisualBasicLangType(ThisType)).TextDeclaration%>
- <span style="color: blue">[MC++]</span> <%=(new MCLangType(ThisType)).TextDeclaration%></pre>
-
- <!-- START OF REF PAGE METADATA -->
-
- <!-- START OF CONSTRUCTOR SECTION -->
- <%
-
-
- for (int i = 0; i < Constructors.Length; ++i) { %>
- <% if (i == 0) { Response.Write("<H4>Constructors</H4><table>"); } %>
- <tr <%
- // this turns off accessors.
-
- if (
-
- (Constructors[i].ThisConstructorInfo.IsSpecialName && (Constructors[i].Name.StartsWith("get_") || Constructors[i].Name.StartsWith("set_")))
- || (Constructors[i].ThisConstructorInfo.IsPrivate || Constructors[i].ThisConstructorInfo.IsFamilyAndAssembly || Constructors[i].ThisConstructorInfo.IsAssembly)
- // || (Constructors[i].ThisConstructorInfo.DeclaringType == typeof(object) && (Constructors[i].ThisConstructorInfo.ReflectedType != typeof(object)))
-
- )
- Response.Write("class=\"InAccessible\"");
-
- %>>
- <td width=100%>
- <%=MakeLangSimpleClassConst(Constructors[i])%>
- <BR>
- <%
-
- %>
- </td>
- </tr>
-
- <% if (i == Constructors.Length - 1) { Response.Write("</table>"); } %>
-
- <% } // end constructor loop %>
- <!-- END OF CONSTRUCTOR SECTION -->
-
- <!-- START OF METHODS SECTION -->
- <% for (int i = 0; i < Methods.Length; ++i) { %>
- <%
- if (i == 0) { Response.Write("<H4>Methods</H4><table>"); } %>
- <tr <%
- // this turns off accessors.
-
- if (
-
- (Methods[i].ThisMethodInfo.IsSpecialName && (Methods[i].Name.StartsWith("get_") || Methods[i].Name.StartsWith("set_")))
- || (Methods[i].ThisMethodInfo.IsPrivate || Methods[i].ThisMethodInfo.IsFamilyAndAssembly || Methods[i].ThisMethodInfo.IsAssembly)
- // || (Methods[i].ThisMethodInfo.DeclaringType == typeof(object) && (Methods[i].ThisMethodInfo.ReflectedType != typeof(object)))
-
- )
- Response.Write("class=\"InAccessible\"");
-
- %>>
- <td width=100%>
- <%
- Object[] Atts = Methods[i].GetAttributeArray(Methods[i].ThisMethodInfo);
- if (Atts.Length > 0){
- for (int j = 0; j < Atts.Length; ++j){
- if (j != 0) Response.Write(", ");
- if (Atts[j] is System.ObsoleteAttribute)
- Response.Write("<A HREF=\"Browser.aspx?class=" + Atts[j].GetType().FullName + "\" class=\"Attribute\" style=\"color: red;\" title=\"" + Atts[j].GetType().Name + ":\n\r" + ((ObsoleteAttribute)Atts[j]).Message + "\">[Attr]</A> ");
- else if (Atts[j] is System.CLSCompliantAttribute)
- Response.Write("<A HREF=\"Browser.aspx?class=" + Atts[j].GetType().FullName + "\" class=\"Attribute\" style=\"color: red;\" title=\"" + Atts[j].GetType().Name + ": " + ((CLSCompliantAttribute)Atts[j]).IsCompliant.ToString() + "\">[Attr]</A>");
- else if (Atts[j] is System.AttributeUsageAttribute){
- Response.Write("<A HREF=\"Browser.aspx?class="
- + Atts[j].GetType().FullName
- + "\" class=\"Attribute\" style=\"color: red;\" title=\""
- + Atts[j].GetType().Name
- + ": \n\r\tAllowMultiple: "
- + ((AttributeUsageAttribute)Atts[j]).AllowMultiple.ToString()
- + ",\n\r\tInherited: "
- + ((AttributeUsageAttribute)Atts[j]).Inherited.ToString()
- + ",\n\rValid on:\n\r"
- + ((AttributeUsageAttribute)Atts[j]).ValidOn.ToString()
- + "\">[Attr]</A>");
- }
- else
- Response.Write("<A HREF=\"Browser.aspx?class=" + Atts[j].GetType().FullName + "\" class=\"Attribute\" style=\"color: red;\" title=\"" + Atts[j].GetType().Name + "\">[Attr]</A>");
- }
- }
- %><%=MakeLangSimpleClassMethod(Methods[i])%>
- </td>
- </tr>
- <% if (i == Methods.Length - 1) { Response.Write("</table>"); } %>
- <% } %>
- <!-- END OF METHODS SECTION -->
-
- <!-- START OF PROPERTIES SECTION -->
- <% for (int i = 0; i < Properties.Count; ++i) { %>
- <% if (i == 0) { Response.Write("<H4>Properties</H4><table>"); } %>
- <tr >
- <td width=100%>
- <% if (((NativePropertyInfo)Properties[i]).ThisPropertyInfo.DeclaringType != ThisType){
- Response.Write("<span class=\"Inherited\" style=\"color:red\" title=\"Inherited from: " + ((NativePropertyInfo)Properties[i]).ThisPropertyInfo.DeclaringType.FullName + "\">[I]</span> ");
- }
- %>
- <%=((NativePropertyInfo)Properties[i]).GetSetLangType.ClassName%>
- <A HREF="Member.aspx?class=<%=ThisType.FullName%>&member=<%=((NativePropertyInfo)Properties[i]).Name%>&type=property"><B><%=((NativePropertyInfo)Properties[i]).Name%><B></A>
- </td>
- </tr>
- <% if (i == Properties.Count - 1) { Response.Write("</table>"); } %>
- <% } %>
- <!-- END OF PROPERTIES SECTION -->
-
- <!-- START OF FIELDS SECTION -->
- <% for (int i = 0; i < Fields.Length; ++i) { %>
- <% if (i == 0) { Response.Write("<H4>Fields</H4><table>"); } %>
- <tr <%
- // this turns off accessors.
-
- if (
- (Fields[i].ThisFieldInfo.IsPrivate || Fields[i].ThisFieldInfo.IsFamilyAndAssembly || Fields[i].ThisFieldInfo.IsAssembly)
- || (Fields[i].ThisFieldInfo.DeclaringType == typeof(object) && (Fields[i].ThisFieldInfo.ReflectedType != typeof(object)))
-
- )
- ;/* Response.Write("style=\"display:none;\""); */
-
- %>>
- <td width=100%>
- <% if (Fields[i].ThisFieldInfo.IsStatic) Response.Write("<span style=\"color:red\" title=\"Static member\">[S]</span> "); %>
- <% if (Fields[i].ThisFieldInfo.DeclaringType != ThisType){
- Response.Write("<span class=\"Inherited\" style=\"color:red\" title=\"Inherited from: " + Fields[i].ThisFieldInfo.DeclaringType.FullName + "\">[I]</span> ");
- }
- %>
- <%=Fields[i].FieldLangType.ClassName%>
- <A HREF="Member.aspx?class=<%=ThisType.FullName%>&member=<%=Fields[i].Name%>&type=field"><B><%=Fields[i].Name%></B></A>
- <%
- if (!Fields[i].FieldValue.Equals(String.Empty))
- Response.Write(" = " + Fields[i].FieldValue + ";");
- %>
- </td>
- </tr>
- <% if (i == Fields.Length - 1) { Response.Write("</table>"); } %>
- <% } %>
- <!-- END OF FIELDS SECTION -->
-
- <!-- START OF Events SECTION -->
- <%
-
-
- %>
- <% for (int i = 0; i < Events.Length; ++i) { %>
- <% if (i == 0) { Response.Write("<H4>Events</H4><table>"); } %>
- <tr>
- <td width=50%>
- <% /*if (Events[i].ThisEventInfo.IsStatic) Response.Write("<span style=\"color:red\" title=\"Static member\">[S]</span> "); */ %>
- <A HREF="Member.aspx?class=<%=ThisType.FullName%>&member=<%=Events[i].Name%>&type=event"><B><%=Events[i].Name%></B></A>
- </td>
- </tr>
- <% if (i == Events.Length - 1) { Response.Write("</table>"); } %>
- <% } %>
- <!-- END OF Events SECTION -->
-
- <!-- END OF THE REF PAGE METADATA -->
-
- </Body>
- </HTML>
-
-