Przy dodawaniu mojego własnego SPItemEventReceiver do Item Content Type zauważyłem, że wszystkie dodane receivers mają ID równe Guid.Empty ({00000000-0000-0000-0000-000000000000});

Kod użyty do dodania receiver:

public static void Register<T>(this SPContentType contentType, params SPEventReceiverType[] receiverTypes)
    where T : SPItemEventReceiver
{
    if (receiverTypes == null || receiverTypes.Length == 0)
    {
        return;
    }

    Type type = typeof(T);
    string assemblyFullName = type.Assembly.FullName;
    string typeFullName = type.FullName;

    foreach (var receiverType in receiverTypes)
    {
        var def = contentType.EventReceivers.Add();
        def.Name = string.Format("{0}{1}", type.Name, receiverType);
        def.Assembly = assemblyFullName;
        def.Type = receiverType;
        def.Class = typeFullName;
        def.Update();
    }
}

Na obrazku poniżej to, co zawiera ContentType po dodaniu receivers:

error1

Sposób dostanie się do definicji receiver:

error2

Przy próbie usunięcia takiego receiver pojawia się następujący błąd:

error3

Jeżeli jednak usuniemy po indeksie to wszystko działa poprawnie, problem jedynie jest taki, że kiedy wykonamy contentType.EventReceivers[0].Delete(); to cała kolekcja przesuwa nam się o jedną pozycję w dół, czyli jeżeli byśmy chcieli usunąć receiver z pozycji 0 i 2 to tak naprawdę usuwamy je z pozycji 0 i 1.

Innym rozwiązaniem problemu jest stworzenie listy elementów SPEventReceiverDefinition do usunięcia i następnie wykonanie na nich operacji Delete():

var toDel = new List<SPEventReceiverDefinition>();
foreach (SPEventReceiverDefinition def in contentType.EventReceivers)
{
    // if sprawdzajacy czy o ten receiver nam chodzi
    toDel.Add(def);
}

foreach (var def in toDel)
    def.Delete();

Jednakże pytanie pozostaje, czy przypisywanie Guid.Empty do ID receiver jest Bugiem czy jednak poprawnym zachowaniem? Ja nie wiem :( zadałem pytanie MS i na grupie SharePoint i czekam na odpowiedź. Może jednak wy wiecie, czy to działa poprawnie czy waszym zdaniem też jest coś nie tak?