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