Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/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# 4.0 使用';基数';委托中的关键字导致System.BadImageFormatException_C# 4.0 - Fatal编程技术网

C# 4.0 使用';基数';委托中的关键字导致System.BadImageFormatException

C# 4.0 使用';基数';委托中的关键字导致System.BadImageFormatException,c#-4.0,C# 4.0,我有一个奇怪的问题,我想如果有人能告诉我为什么会发生这种情况。我在基本抽象类中有一个受保护的方法,如下所示: protected T ForExistingEntity<T>(TEntity entity, object key, Func<Entity, T> action) { entity = GetByKey(key); if (entity != null) return action(entity); return d

我有一个奇怪的问题,我想如果有人能告诉我为什么会发生这种情况。我在基本抽象类中有一个受保护的方法,如下所示:

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 Update(e);
    }
);
执行此代码时,在以下行引发异常:

return action(entity);
在基抽象类中。例外情况是:

System.BadImageFormatException:试图加载格式不正确的程序。(HRESULT的异常:0x8007000B)

现在,当我修改我的呼叫时,如下所示:

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 Update(e);
    }
);
它运行正常,没有任何问题

编辑:

Update方法位于基本抽象类中,如下所示:

public virtual bool Update(TEntity entity) {
    Condition.Requires(entity, "entity")
        .IsNotNull();

    if (ValidateEntity(entity))
        return Update(entity, true);

    return false;
}

我开始认为这是因为更新是虚拟的,调用实际上起源于基类本身?不管怎么说,这个异常并没有什么帮助。

这似乎是一个涉及从泛型类中的匿名方法调用基虚拟方法的问题。如果您希望解决此问题,请毫不犹豫地在connect上升级此错误。幸运的是,这里的解决方法非常简单。

我也遇到了同样的问题。我安装了.NET4.5框架。当我卸载该软件并替换为.NET 4.0 framework时,这个问题消失了(例如,当我查看VS2010信息的右上角时,4.0.30319)

我遇到了相同的错误。MS仍然没有解决这个问题,但是可以通过创建一个方法来包装基本方法调用来解决这个问题。