SPContentTypeId Structure
Represents the identifier (ID) of a content type.
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Available in Sandboxed Solutions: Yes
Available in SharePoint Online
Syntax
'Declaration
<SerializableAttribute> _
<ClientCallableTypeAttribute(Name := "ContentTypeId", ValueObject := True, _
ServerTypeId := "{DA0F1E90-296F-480e-BC27-CEFE51EFF241}")> _
<SubsetCallableTreatAsExternalTypeAttribute> _
Public Structure SPContentTypeId _
Implements IComparable
'Usage
Dim instance As SPContentTypeId
[SerializableAttribute]
[ClientCallableTypeAttribute(Name = "ContentTypeId", ValueObject = true, ServerTypeId = "{DA0F1E90-296F-480e-BC27-CEFE51EFF241}")]
[SubsetCallableTreatAsExternalTypeAttribute]
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
Microsoft.SharePoint Namespace