为什么修复动态参数to params参数无法构建

时间:2016-02-08 20:48:33

标签: c# dynamic params-keyword

当使用params关键字为方法修复动态参数时,解决方案无法构建,我使用的是.NET 4.6和VS2015,但问题也发生在以前版本的.NET Framework上。错误列表中没有错误,只是底部的“Build Failed”消息。

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

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提供的示例创建了一个新的解决方案,它构建没有任何问题。但在我的解决方案中,即使在“关闭,清理和构建”之后问题仍然存在。如果我传递一个字符串,一个对象,一个动态或其他任何东西都没关系。在下图中没有调用方法,解决方案仍然无法构建。

enter image description here

1 个答案:

答案 0 :(得分: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)的代码。