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
Microsoft.SharePoint Namespace