我有一个奇怪的问题,我希望有人能启发我为什么会发生这种情况。我在基本抽象类中有一个受保护的方法,如下所示:
protected T ForExistingEntity<T>(TEntity entity, object key, Func<Entity, T> action) {
entity = GetByKey(key);
if (entity != null)
return action(entity);
return default(T);
}
我来自继承类的原始调用如下:
return base.ForExistingEntity(
new MyEntity(), key, e => {
e.someFiled = 5;
return base.Update(e);
}
);
执行此代码时,会在以下行引发异常:
return action(entity);
在抽象基类中。例外情况是:
System.BadImageFormatException:尝试加载格式不正确的程序。 (HRESULT 异常:0x8007000B)
现在,当我修改我的呼叫时,如下所示:
return base.ForExistingEntity(
new MyEntity(), key, e => {
e.someFiled = 5;
return Update(e);
}
);
它运行正常,没有任何问题。
Edit:
Update 方法位于抽象基类中,如下所示:
public virtual bool Update(TEntity entity) {
Condition.Requires(entity, "entity")
.IsNotNull();
if (ValidateEntity(entity))
return Update(entity, true);
return false;
}
我开始认为发生这种情况是因为 Update 是虚拟的并且调用实际上源自基类本身?无论如何,例外并不是很有帮助。