Вы можете использовать SPBuiltInContentTypeId класс, чтобы получить встроенные идентификаторы типов контента. Так зачем использовать имена, если вы можете использовать идентификаторы, которые намного лучше?
Локализованные строки
Конечно, вы также можете использовать имена, но тогда вам следует использовать SPUtility.GetLocalizedString . Проверьте C: \ Program Files \ Common Files \ microsoft shared \ Расширения веб-сервера \ 12 \ Resources \ core.resx, чтобы узнать, какие имена ресурсов имеют какие значения.
string strWikiDocumentTitle = SPUtility.GetLocalizedString("$Resources:WikiDocument", "core", SPContext.Current.Web.Language);
Идентификаторы и иерархия типов контента
Говоря об идентификаторах, типы контента имеют свою собственную иерархию , и вы правы, что типы контента, такие как вики и все типы контента, полученные из вики, будут начинаться с 0x010108.
В любом случае, вы на правильном пути.
//Returns best match, that is the content type that is Wiki document. If wiki document content type not in list, will return it's parent content type id.
SPContentTypeId bestMatch = list.ContentTypes.BestMatch(SPBuiltInContentTypeId.WikiDocument);
if (bestMatch.IsChildOf(SPBuiltInContentTypeId.WikiDocument))
{
return list.ContentTypes[bestMatch];
}
Подсказка о типе содержимого списка
Кстати, возвращаемый тип контента не будет иметь точно ID 0x010108, а скорее 0x010108xxxxxxxxxxxxxxxxx .... (это будет CHILD, если тип контента wiki), поскольку при добавлении типа контента в список он фактически создает новый контент тип, производный от его родителя.
Так что вы можете безопасно удалить этот тип контента, если хотите. А если вы хотите изменить этот тип контента, то используйте возвращаемое PARENT возвращаемого типа контента (свойство SPContentType.Parent), чтобы изменить и применить изменения ко всем унаследованным типам контента ...