SPContentTypeId structure

Represents the identifier (ID) of a content type.

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

Syntax

'Declaration
<SerializableAttribute> _
Public Structure SPContentTypeId _
    Implements IComparable
'Usage
Dim instance As SPContentTypeId
[SerializableAttribute]
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 ConsoleApp

    Sub Main()

        ' 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

        Console.Write(vbCrLf & "Press ENTER to continue....")
        Console.Read()
    End Sub
End Module
using System;
using System.Collections.Generic;
using Microsoft.SharePoint;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // 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.Read();
        }
    }
}

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