0

将动态参数重新传递给带有 params 关键字的方法时,解决方案无法构建,我使用的是 .NET 4.6 和 VS2015,但以前版本的 .NET Framework 也会出现此问题。错误列表上没有产生错误,只有底部的“构建失败”消息。

这是我试图运行的示例代码:

public void MethodWithDynamicParameter(dynamic dyn)
{
    MethodWithParams(dyn); //This fails to build!

    MethodWithParams(new object[] { dyn }); //This compiles!
}

public void MethodWithParams(params object[] objects)
{

}

有人可以解释第一次通话有什么问题吗?

编辑1:

我已经使用 Dave 提供的示例创建了一个新的解决方案,并且它可以毫无问题地构建。但在我的解决方案中,即使在“关闭、清理和构建”之后问题仍然存在。如果我传递一个字符串、一个对象、一个动态或其他任何东西都没有关系。在下图中,没有对方法的调用,并且解决方案仍然没有构建。

在此处输入图像描述

4

1 回答 1

0

我使用以下代码创建了一个新的控制台应用程序作为测试:

class Program
{
    static void Main(string[] args)
    {
        // Test with object:
        object x = new object();
        MethodWithDynamicParameter(x);

        // Test with specific type of object, a string:
        MethodWithDynamicParameter("string");

        Console.ReadKey();
    }

    static void MethodWithDynamicParameter(dynamic dyn)
    {
        MethodWithParams(dyn);
        MethodWithParams(new object[] { dyn });
    }

    static void MethodWithParams(params object[] objects)
    {

    }
}

对我来说,程序编译和运行都没有错误。

如果您还没有尝试过,我可以建议标准的“关闭所有文档,清理所有,重建所有”和/或“重新启动 Visual Studio”解决方案吗?


此外,他们dynamic的关键字可能是你的麻烦的根源,因为它绕过了许多类型检查,直到编译时。dyn在调用MethodWithDynamicParameter(dynamic dyn).

于 2016-02-08T20:57:07.317 回答