This document is archived and information here might be outdated.  Recommended version.


Get Interfaces Snippet (ArcObjects .NET 10.4 SDK)
ArcObjects Library Reference

Get Interfaces Snippet

Get all matching Interface Types as compared to an unknown object x.

[C#]
/// <summary>
/// Get all matching Interface Types as compared to an unknown object x.
/// </summary>
/// <param name="anAssembly">A System.Reflection.Assembly that is a .NET Assembly. This would be created by System.Reflection.Assembly.LoadFrom() Method. Example: the Assembly ESRI.ArcGIS.Carto</param>
/// <param name="x">A System.Object that is a Class to interrogate. Example: ESRI.ArcGIS.Carto.EnvelopeClass</param>
/// <returns>A System.Collection.ArrayList containing a series of System.String values.</returns>
/// <remarks></remarks>
public System.Collections.ArrayList GetInterfaces(System.Reflection.Assembly anAssembly, object x)
{

  // Create an ArrayList to store the names (strings) of Interfaces that are used by an unknown object x
  System.Collections.ArrayList returnArrayList=new System.Collections.ArrayList();

  //Get the Type of the unknown object x
  System.Type xType=x.GetType();

  //For a specified .NET Assembly obtain all of it's Types in an Array
  System.Type[] assemblyTypes=anAssembly.GetTypes();

  //Loop through all of the Types in the .NET Assembly
  foreach (System.Type assemblyType in assemblyTypes)
  {

          //If the Assembly Type is an Interface proceed
          if (assemblyType.IsInterface)
          {

                  //If the Assembly Type matches the unknown object x Type proceed
                  if (assemblyType.IsInstanceOfType(x))
                  {

                          //Add the fully qualified Interface name of the Assembly Type to the ArrayList
                          returnArrayList.Add(assemblyType.FullName);

                  }

          }

  }

  //Return the ArrayList of matched Initerface names
  return returnArrayList;

}
[Visual Basic .NET]
''' <summary>
''' Get all matching Interface Types as compared to an unknown object x.
''' </summary>
''' <param name="anAssembly">A System.Reflection.Assembly that is a .NET Assembly. This would be created by System.Reflection.Assembly.LoadFrom() Method. Example: the Assembly ESRI.ArcGIS.Carto</param>
''' <param name="x">A System.Object that is a Class to interrogate. Example: ESRI.ArcGIS.Carto.EnvelopeClass</param>
''' <returns>A System.Collection.ArrayList containing a series of System.String values.</returns>
''' <remarks></remarks>
Public Function GetInterfaces(ByVal anAssembly As System.Reflection.Assembly, ByVal x As System.Object) As System.Collections.ArrayList

  ' Create an ArrayList to store the names (strings) of Interfaces that are used by an unknown object x
  Dim returnArrayList As New System.Collections.ArrayList

  'Get the Type of the unknown object x
  Dim xType As System.Type=x.GetType

  'For a specified .NET Assembly obtain all of it's Types in an Array
  Dim assemblyTypes As System.Type()=anAssembly.GetTypes

  'Loop through all of the Types in the .NET Assembly
  Dim assemblyType As System.Type
  For Each assemblyType In assemblyTypes

      'If the Assembly Type is an Interface proceed
      If assemblyType.IsInterface Then

          'If the Assembly Type matches the unknown object x Type proceed
          If assemblyType.IsInstanceOfType(x) Then

              'Add the fully qualified Interface name of the Assembly Type to the ArrayList
              returnArrayList.Add(assemblyType.FullName)

          End If

      End If

  Next

  'Return the ArrayList of matched Initerface names
  Return returnArrayList

End Function

Additional Requirements
  • The code in this document requires the following References added to the Visual Studio project:
  • System