Nel caso in cui una di queste condizioni non sia soddisfatta viene sollevata un'eccezione che, incrociando le dita, qualche volta è tipizzata (come la famosa SPException: The content type "XYZ" is part of an application feature.)
Tavolta l'object model di SharePoint ci può venire in aiuto. Per ottenere un elenco degli oggetti, siti e liste, che fanno uso del content type che si sta cercando di cancellare, c'è il metodo SPContentTypeUsage.GetUsages().
Per qualche motivo, personalmente ipotizzo sia per ragioni storiche, c'è un ulteriore punto di attenzione molto importante. Mi sto riferendo ad una differenza di implementazione della cancellazione dei content type tra SharePoint Foundation e SharePoint Server. Riporto l'estratto di un articolo su MSDN:
"You cannot delete a site content type if it is being used as the basis for other site or list content types. You must first remove this content type from all lists that use it and delete all child site content types that are based on it.
You cannot delete a content type from a list if that list contains items of that content type. However, Microsoft SharePoint Foundation does not consider items that are in the Recycle Bin. If those items are restored after their content type is deleted from the list, those items are assigned the default content type for that list."
In conclusione quello che suggerisco di fare quando non si riesce a cancellare un content type da object model è verificare approfonditamente i pre-requisiti della cancellazione.
In seconda battuta fare un backup della site collection e poi provare a passare da client side a server side, optare per usare i WebService, la UI, SP Designer (ebbesi si a volta fa i miracoli) e in situazioni estreme e/o per i più temerari fare qualche query sul DB per cercare di individuare il problema considerando sempre che db è fonte di ispirazione ma non di soluzione ai problemi :-)




