Tôi có một đoạn mã cần kiểm tra một thực thể khi được lưu bởi Kho lưu trữ của tôi. Tôi có một đánh chặn NHibernate trên lưu để kiểm tra điều này, nhưng khi tôi gọi là GetGenericTypeDefinition
chức năng mã không thành công với các lỗi:Tại sao GetGenericTypeDefinition không thành công?
[InvalidOperationException: Operation is not valid due to the current state of the object.] System.RuntimeType.GetGenericTypeDefinition() +7525641
Mã là thế này:
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);
}
}
}
Bất kỳ trợ giúp sẽ được nhiều đánh giá cao.
Bạn có thể xem liệu evt.Entity.GetType() có bị lỗi không? Nó sẽ giúp biết chính xác những gì gọi hàm không thành công trong ví dụ này. Ngoại lệ không giống như một ngoại lệ được trả về từ GetGenericTypeDefinition(). –
Nó không thất bại để có được evt.Entity.GetType() – Richard