我最近遇到了dynamic
关键字的奇怪行为,而我正在测试一些东西.这不是我迫切需要解决的问题,因为我只是在尝试,但我想知道是否有人可以透露正在发生的事情
我有一个构建器,它返回一个HttpWebRequest
对象和一个扩展方法HttpWebRequest
.
我的一个构建器方法需要string
参数.当我将构建器方法传递给字符串时,整个过程都有效,但我传递了一个dynamic
变量,该变量是一个不再有效的字符串.
看起来好像返回类型的构建器方法HttpWebRequestBuilder
现在返回dynamic
.
下面的代码很简单,可以重现它,也可以在这里找到
注意
要使其工作,请注释掉该行.SetBody(dynamicString)
并取消注释该行.SetBody(json)
.
public class Program
{
public static void Main()
{
dynamic dynamicString = "{ \"test\" : \"value\" }";
string json = "{ \"test\" : \"value\" }";
string test = new HttpWebRequestBuilder()
.SetRequestType()
//.SetBody(json) //uncomment this and it works
.SetBody(dynamicString) //uncomment this and it breaks
.Build()
.ExtensionMethod();
Console.WriteLine(test);
}
}
public class HttpWebRequestBuilder
{
private readonly …
Run Code Online (Sandbox Code Playgroud)