gpt4 book ai didi

c# - 为什么 GetGenericTypeDefinition 失败?

转载 作者:行者123 更新时间:2023-12-02 15:32:34 25 4
gpt4 key购买 nike

我有一段代码,需要在我的存储库保存时检查实体。我在保存时有一个 NHibernate 拦截器来检查这一点,但是当我调用 GetGenericTypeDefinition 函数时,代码失败并出现错误:

[InvalidOperationException: Operation is not valid due to the current state of the object.] 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);
}
}
}

任何帮助将不胜感激。

最佳答案

Type type = evt.Entity.GetType();
if(
type.IsGenericType &&
type.GetGenericTypeDefinition() == typeof(IChild<>)
)

试试这个。根据http://msdn.microsoft.com/en-us/library/system.type.getgenerictypedefinition.aspx :

InvalidOperationException: The current type is not a generic type. That is, IsGenericType returns false.

关于c# - 为什么 GetGenericTypeDefinition 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3969618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com