У меня странная проблема, и я хотел бы, чтобы кто-нибудь мог объяснить мне, почему это происходит.У меня есть защищенный метод в базовом абстрактном классе, как показано ниже:
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);
}
);
он работает нормально без каких-либо проблем.
Редактировать:
Метод Update находится в базовом абстрактном классе и выглядит следующим образом:
public virtual bool Update(TEntity entity) {
Condition.Requires(entity, "entity")
.IsNotNull();
if (ValidateEntity(entity))
return Update(entity, true);
return false;
}
Я начинаю думать, что это происходит из-за того, что Update является виртуальным, а вызов на самом делеберет свое начало в самом базовом классе?В любом случае, исключение не очень полезно.