2010-10-19 20 views
9

Ho un pezzo di codice che deve controllare un'entità quando viene salvata dal mio repository. Ho un intercettore NHibernate sul salvataggio di controllare questo, ma quando chiamo la funzione GetGenericTypeDefinition il codice viene a mancare con l'errore:Perché GetGenericTypeDefinition fallisce?

[InvalidOperationException: Operation is not valid due to the current state of the object.] System.RuntimeType.GetGenericTypeDefinition() +7525641

codice è questo:

protected override object PerformSaveOrUpdate(SaveOrUpdateEvent evt) 
{ 
    if (evt.Entity.GetType().GetGenericTypeDefinition() == typeof(IChild<>)) 
    { 
     var parent = (evt.Entity as IChild<Entity>).Parent; 
     if (parent != null) 
     { 
      parent.UpdateCacheCounters(); 
      evt.Session.Save(parent); 
     } 
    } 
} 

Qualsiasi aiuto sarebbe molto apprezzato.

+1

Si può vedere se evt.Entity.GetType() stesso non riesce già? Sarebbe utile sapere esattamente quale funzione non funziona in questo esempio. L'eccezione non sembra un'eccezione restituita da GetGenericTypeDefinition(). –

+0

Non riesce a ottenere evt.Entity.GetType() – Richard

risposta

Problemi correlati