Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么GetGenericTypeDefinition失败?_C#_Nhibernate_Generics - Fatal编程技术网

C# 为什么GetGenericTypeDefinition失败?

C# 为什么GetGenericTypeDefinition失败?,c#,nhibernate,generics,C#,Nhibernate,Generics,我有一段代码,需要在存储库保存时检查实体。我在保存时有一个NHibernate拦截器来检查这一点,但是当我调用GetGenericTypeDefinition函数时,代码失败,出现错误: [InvalidOperationException:由于对象的当前状态,操作无效。] System.RuntimeType.GetGenericTypeDefinition()+7525641 代码如下: protected override object PerformSaveOrUpdate(SaveOr

我有一段代码,需要在存储库保存时检查实体。我在保存时有一个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);
        }
    }
}
受保护的重写对象PerformSaveOrUpdate(SaveOrUpdateEvent evt)
{
if(evt.Entity.GetType().GetGenericTypeDefinition()==typeof(IChild))
{
var parent=(evt.Entity作为IChild).parent;
如果(父项!=null)
{
UpdateCacheCounters();
evt.Session.Save(父级);
}
}
}
任何帮助都将不胜感激。

Type=evt.Entity.GetType();
Type type = evt.Entity.GetType();
if(
    type.IsGenericType && 
    type.GetGenericTypeDefinition() == typeof(IChild<>)
)
如果( type.IsGenericType&& type.GetGenericTypeDefinition()==typeof(IChild) )
试试这个。根据:

InvalidOperationException:当前 类型不是泛型类型。就是, IsGenericType返回false


你能看看evt.Entity.GetType()本身是否已经失败了吗?在这个例子中,准确地知道什么函数调用失败会有帮助。该异常看起来不像从GetGenericTypeDefinition()返回的异常。它不会无法获取evt.Entity.GetType()谢谢。很明显,现在你已经给我看了,只是没有看到而已。谢谢你的帮助。