SPContentTypeId Structure

Represents the identifier (ID) of a content type.

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

Public Structure SPContentTypeId _
    Implements IComparable

Dim instance As SPContentTypeId
public struct SPContentTypeId : IComparable

Remarks

Content type IDs uniquely identify the content type and are designed to be recursive. The content type ID encapsulates the lineage of a content type or the line of parent content types from which the content type inherits. Each content type ID contains the ID of the parent content type, which in turn contains the ID of that content type's parent, and so on, ultimately back to and including the System content type ID.

For more information, see Content Type IDs and the Id property.

Examples

The following example shows a console application that fills an array with five built-in content type IDs and counts the number of descendants each member of the array has in common with other members of the array. It also prints their string values to the console.

Imports System
Imports System.Collections.Generic
Imports Microsoft.SharePoint

Module Test
   Sub Main()
      Using site As SPSite = New SPSite("http://localhost")
         Using web As SPWeb = site.OpenWeb()

            ' Fill an array with SPContentTypeId objects.
            Dim ids As New List(Of SPContentTypeId)
            ids.Add(SPBuiltInContentTypeId.System)
            ids.Add(SPBuiltInContentTypeId.Item)
            ids.Add(SPBuiltInContentTypeId.Document)
            ids.Add(SPBuiltInContentTypeId.BasicPage)
            ids.Add(SPBuiltInContentTypeId.WebPartPage)

            ' Display the hex strings.
            Console.WriteLine("The list has {0} content type IDs:", ids.Count.ToString())
            For Each id As SPContentTypeId In ids
               Console.WriteLine("{0}", id.ToString())
            Next

            ' Show the lineage.
            Console.WriteLine()
            For i As Integer = 0 To ids.Count - 1
               Dim parent As SPContentTypeId = ids(i)
               Dim children As Integer = 0
               For j As Integer = 0 To ids.Count - 1
                  Dim id As SPContentTypeId = ids(j)
                  If id.IsChildOf(parent) And id <> parent Then
                     children += 1
                  End If
               Next
               Console.WriteLine("{0} descendants of {1}", children.ToString(), ids(i).ToString())
            Next
         End Using
      End Using
      Console.Write(vbCrLf + "Press ENTER to continue...")
      Console.ReadLine()
   End Sub
End Module
using System;
using System.Collections.Generic;
using Microsoft.SharePoint;

namespace Test
{
   class ConsoleApp
   {
      static void Main(string[] args)
      {
         using (SPSite site = new SPSite("http://localhost"))
         {
            using (SPWeb web = site.OpenWeb())
            {
               // Fill an array with SPContentTypeId objects.
               List<SPContentTypeId> ids = new List<SPContentTypeId>
               { 
                  SPBuiltInContentTypeId.System,
                  SPBuiltInContentTypeId.Item,
                  SPBuiltInContentTypeId.Document, 
                  SPBuiltInContentTypeId.BasicPage, 
                  SPBuiltInContentTypeId.WebPartPage
               };
               
               // Display the hex strings.
               Console.WriteLine("The list has {0} content type IDs:", ids.Count.ToString());
               foreach (SPContentTypeId id in ids) Console.WriteLine("{0}", id.ToString());
               
               // Show the lineage.
               Console.WriteLine();
               for (int i = 0; i < ids.Count; i++)
               {
                  SPContentTypeId parent = ids[i];
                  int children = 0;
                  for (int j = 0; j < ids.Count; j++)
                  { 
                     SPContentTypeId id = ids[j];
                     if (id.IsChildOf(parent) && id != parent)
                        children++;
                  }
                  Console.WriteLine("{0} descendants of {1}", children.ToString(), ids[i].ToString());
               }
            }
         }
         Console.Write("\nPress ENTER to continue...");
         Console.ReadLine();
      }
   }

The application prints the following output to the console.

The list has 5 content type IDs:
0x
0x01
0x0101
0x010109
0x01010901

4 descendants of 0x
3 descendants of 0x01
2 descendants of 0x0101
1 descendants of 0x010109
0 descendants of 0x01010901

Press ENTER to continue...

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

See Also

Reference

SPContentTypeId Members

Microsoft.SharePoint Namespace

Id

SPBuiltInContentTypeId

Other Resources

Content Type IDs

Introduction to Content Types

Site and List Content Types

Base Content Type Hierarchy

SPContentType Object Overview