Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.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# 代表制。行动<;动态,int>;不接受'1';论据_C#_Entity Framework_Postgresql_Lambda_Mono - Fatal编程技术网

C# 代表制。行动<;动态,int>;不接受'1';论据

C# 代表制。行动<;动态,int>;不接受'1';论据,c#,entity-framework,postgresql,lambda,mono,C#,Entity Framework,Postgresql,Lambda,Mono,我试图从Mono上构建PostgreSqlGeneration代码。不幸的是,我得到了一个错误,我不明白 在类中,以下方法给出生成错误“委托系统。操作不接受'1'参数”: 我不知道为什么会发生这种情况,因为每个只有一个动态类型,没有整数。但我对这种lambda表达式没有太多经验。要了解更多信息并使迁移正常运行,我希望有人能解释错误发生的原因以及如何修复错误。免责声明:我感到非常遗憾,我找不到任何可以解释错误原因的东西。如果有人知道;请告诉我。谷歌在这方面失败了 显然,编译器为每个选择了错误的重载

我试图从Mono上构建
PostgreSqlGeneration
代码。不幸的是,我得到了一个错误,我不明白

在类中,以下方法给出生成错误“委托系统。操作不接受'1'参数”:

我不知道为什么会发生这种情况,因为
每个
只有一个
动态
类型,没有整数。但我对这种lambda表达式没有太多经验。要了解更多信息并使迁移正常运行,我希望有人能解释错误发生的原因以及如何修复错误。

免责声明:我感到非常遗憾,我找不到任何可以解释错误原因的东西。如果有人知道;请告诉我。谷歌在这方面失败了

显然,编译器为每个
选择了错误的重载。库中有两个,一个执行
操作
,另一个执行
操作

如果您没有使用
动态
它会工作得很好(如果我不得不猜测的话);但是
dynamic
引发了各种奇怪的问题;另外,你正在使用单声道

由于编译器坚持使用另一个重载,因此解决方案非常简单。就用它吧

DetectHistoryRebuild(migrationOperations).Each<dynamic>((o, i) => Generate(o));

解决方案是添加缺少的程序集引用
Microsoft.Csharp.dll
。由于某种原因,将lambda签名从
i
更改为
(i,j)
,如BradleyDotNET在其回答中所建议的,丢失程序集引用的错误变得可见。

@BradleyDotNET我将签名放入问题中。好的,谢谢。我看不出它为什么会要求一个
int
。它似乎使用了一个带有错误签名的扩展方法?什么是
Generate
?声明在哪里?你确定只需要一个论点吗?看起来有可能是这里使用的
Each()
的第一个重载。我99%确定它会崩溃,因为它由于
动态
参数选择了错误的重载,但我找不到任何文档解释原因。谢谢。现在错误(在同一行)是
委托系统。Func不接受'2'参数
。@user2609980哇;做你真糟糕。请尝试我的新建议并直接实例化操作。@user2609980它应该是
每个((o,i)=>…)
有两个重载,每个重载都带有一个通用参数。有两个通用参数的是一个你不感兴趣的重载。@hvd我同意;但这似乎不起作用。@user2609980嘿,我想这是一个进步,至少与您当前的问题完全无关。:)
private void Generate(HistoryOperation migration)
{
    //migration

    Check.NotNull(migration, "historyOperation");

    using (var writer = Writer())
    {
        migration.CommandTrees.Each(
            commandTree =>
            {

                switch (commandTree.CommandTreeKind)
                {
                    case DbCommandTreeKind.Insert:


                        writer.Write(GetInsertHistorySql((DbInsertCommandTree)commandTree));

                       break;
                }
            });

        Statement(writer);
    }

}
DetectHistoryRebuild(migrationOperations).Each<dynamic>((o, i) => Generate(o));
DetectHistoryRebuild(migrationOperations).Each<dynamic>(new Action(o => Generate(o)));