将参数从动态更改为对象是一项重大更改吗?

Is changing a parameter from dynamic to object a breaking change?

在 public 库中有一些 public 方法具有 dynamic 参数,例如

public void DoSomething(dynamic date)

这些参数实际上不需要是动态的,所以我想将它们更改为 'object'

public void DoSomething(object date)

是否有任何方法可以将(输入)参数从动态更改为对象可以破坏使用此 api 的现有代码?

编辑:这个问题具体是关于在将参数类型从动态更改为对象时打破 API 的现有使用者,而不是关于两者之间差异的一般问题。

我做了一点测试,我的结论是即使不重新编译客户端,客户端代码也不会因为仅将动态参数更改为对象而中断。

我用方法写了一个 .Net 库项目

public static string DoSomething(dynamic date) => "Dynamic:" + date.ToString();

在控制台应用程序中,我用

调用它

Console.WriteLine(TestClass.DoSomething(new { Text = "Hallo" }));

并打印 Dynamic:{ Text = Hallo }

然后我把库里的代码改成了

public static string DoSomething(object date) => "object:" + date.ToString();

在不重新编译控制台应用程序的情况下,我将 'object' 版本的 dll 复制到控制台文件夹,它运行时没有错误打印 object:{ Text = Hallo }