Почему сбой GetGenericTypeDefinition? - PullRequest
9 голосов
/ 19 октября 2010

У меня есть фрагмент кода, который должен проверять сущность при сохранении в моем репозитории.У меня есть перехватчик NHibernate в сохранении, чтобы проверить это, но когда я вызываю функцию GetGenericTypeDefinition, код завершается с ошибкой:

[InvalidOperationException: операция недопустима из-за текущего состоянияобъект.] System.RuntimeType.GetGenericTypeDefinition () + 7525641

Код такой:

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);
        }
    }
}

Любая помощь будет высоко ценится.

1 Ответ

13 голосов
/ 19 октября 2010
Type type = evt.Entity.GetType();
if(
    type.IsGenericType && 
    type.GetGenericTypeDefinition() == typeof(IChild<>)
)

попробуй это. согласно http://msdn.microsoft.com/en-us/library/system.type.getgenerictypedefinition.aspx:

InvalidOperationException: текущий тип не является универсальным типом. То есть, IsGenericType возвращает false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...