<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Getting the real COM class name in ArcObjects SDK Questions</title>
    <link>https://community.esri.com/t5/arcobjects-sdk-questions/getting-the-real-com-class-name/m-p/178606#M4620</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Neil, perhaps I'm doing somthing wrong here, cause I've tried this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;IWorkspace pWorkspace = EsriDatabase.FileGdbWorkspaceFromPath("WhatEver.gdb");
Console.WriteLine(pWorkspace.GetType().FullName);&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;This code outputs "System.__ComObject" no matter which interface or class I use.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Dec 2021 09:09:30 GMT</pubDate>
    <dc:creator>JensHaffner</dc:creator>
    <dc:date>2021-12-11T09:09:30Z</dc:date>
    <item>
      <title>Getting the real COM class name</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/getting-the-real-com-class-name/m-p/178602#M4616</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;This problem really puzzles me...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I???d like to get the ArcObjects CoClass name behind the interface pointer, which I have.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If I???ve got an IFeature pointer, I???d like to know whether it???s in fact a Feature object or perhaps a ComplexEdgeFeature or something else.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;No matter what I try, I don???t get the right name???&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Jul 2012 06:15:48 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/getting-the-real-com-class-name/m-p/178602#M4616</guid>
      <dc:creator>JensHaffner</dc:creator>
      <dc:date>2012-07-18T06:15:48Z</dc:date>
    </item>
    <item>
      <title>Re: Getting the real COM class name</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/getting-the-real-com-class-name/m-p/178603#M4617</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Have you tried something like this (in VB.NET)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
If TypeOf IFeature Is IComplexEdgeFeature Then
&amp;nbsp; 
End If
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 09:09:22 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/getting-the-real-com-class-name/m-p/178603#M4617</guid>
      <dc:creator>KenBuja</dc:creator>
      <dc:date>2021-12-11T09:09:22Z</dc:date>
    </item>
    <item>
      <title>Re: Getting the real COM class name</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/getting-the-real-com-class-name/m-p/178604#M4618</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;As Ken mentioned you can usually use TypeOf and test for a particular interface that will identify the underlying class.&amp;nbsp; In .NET you can also use the GetType method and check the FullName property.&amp;nbsp; This will give you the fully qualified class name.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;Dim layer As IFeatureLayer = New FeatureLayer
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim s As String = layer.GetType.FullName&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 09:09:25 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/getting-the-real-com-class-name/m-p/178604#M4618</guid>
      <dc:creator>NeilClemmons</dc:creator>
      <dc:date>2021-12-11T09:09:25Z</dc:date>
    </item>
    <item>
      <title>Re: Getting the real COM class name</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/getting-the-real-com-class-name/m-p/178605#M4619</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Ken, you are absolutely right, it is possible to check it this way:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
If TypeOf IFeature Is IComplexEdgeFeature Then
End If
&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;But I've learned, that in some cases it's difficult to pick an interface that is unique for a particular COM class.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 09:09:28 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/getting-the-real-com-class-name/m-p/178605#M4619</guid>
      <dc:creator>JensHaffner</dc:creator>
      <dc:date>2021-12-11T09:09:28Z</dc:date>
    </item>
    <item>
      <title>Re: Getting the real COM class name</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/getting-the-real-com-class-name/m-p/178606#M4620</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Neil, perhaps I'm doing somthing wrong here, cause I've tried this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;IWorkspace pWorkspace = EsriDatabase.FileGdbWorkspaceFromPath("WhatEver.gdb");
Console.WriteLine(pWorkspace.GetType().FullName);&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;This code outputs "System.__ComObject" no matter which interface or class I use.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 09:09:30 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/getting-the-real-com-class-name/m-p/178606#M4620</guid>
      <dc:creator>JensHaffner</dc:creator>
      <dc:date>2021-12-11T09:09:30Z</dc:date>
    </item>
    <item>
      <title>Re: Getting the real COM class name</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/getting-the-real-com-class-name/m-p/178607#M4621</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;its a little tricky to get the type of com object. you may have to iterate through all the types and compare the object pointer with array of pointers returned by the com object. Below is the code to accomplish this. Hope this helps&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
 IntPtr iunkwn = Marshal.GetIUnknownForObject(pWorkspace);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enum all the types defined in the interop assembly
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Reflection.Assembly objAssembly =
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Reflection.Assembly.GetAssembly(typeof(IWorkspace));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type[] objTypes = objAssembly.GetTypes();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // find the first implemented interop type
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (Type currType in objTypes)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // get the iid of the current type
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Guid iid = currType.GUID;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!currType.IsInterface || iid == Guid.Empty)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // com interop type must be an interface with valid iid
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // query supportability of current interface on object
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IntPtr ipointer = IntPtr.Zero;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Marshal.QueryInterface(iunkwn, ref iid, out ipointer);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ipointer != IntPtr.Zero)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string str =currType.FullName;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 09:09:33 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/getting-the-real-com-class-name/m-p/178607#M4621</guid>
      <dc:creator>sapnas</dc:creator>
      <dc:date>2021-12-11T09:09:33Z</dc:date>
    </item>
  </channel>
</rss>

