Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
作为C#方法参数传递的动态属性_C#_Dynamic Typing - Fatal编程技术网

作为C#方法参数传递的动态属性

作为C#方法参数传递的动态属性,c#,dynamic-typing,C#,Dynamic Typing,在这段代码中,我们传递一个动态对象的属性。为了便于讨论,我们知道该属性存在,并且没有像属性名称的大小写错误那样的错误 当我们在方法调用中直接使用该属性时,该方法将收到null。 然而,当我们从属性中分配一个局部变量并传递它时,就会收到该值 [HttpPost,路线(“/不/重要”)] 公共IActionsResult SomeWebApi([FromBody]动态数据) { HelperMethod(data.fooProperty);//失败 字符串fooProp=data.fooProper

在这段代码中,我们传递一个动态对象的属性。为了便于讨论,我们知道该属性存在,并且没有像属性名称的大小写错误那样的错误

当我们在方法调用中直接使用该属性时,该方法将收到null。 然而,当我们从属性中分配一个局部变量并传递它时,就会收到该值

[HttpPost,路线(“/不/重要”)]
公共IActionsResult SomeWebApi([FromBody]动态数据)
{
HelperMethod(data.fooProperty);//失败
字符串fooProp=data.fooProperty;
HelperMethod(fooProp);//有效
}
void HelperMethod(字符串foo){
//使用foo
}
我还注意到构造对象是有效的。假设属性为A、B、C:

var bar=new{data.A,data.B,data.C};
这将成功地将属性值解析为强但匿名类型的对象


直接使用动态对象的属性作为方法调用参数的问题是一个语言错误,还是有关于动态对象行为的文档涵盖了这一点?

这是.net核心吗?您是否有
HelperMethod
方法的重载?只有WebAPI方法才会遇到这个问题吗?它在普通控制台应用程序中工作,请参阅。是否可以在方法中添加多个日志行(或
Console.WriteLine
/
Debug.WriteLine()
调用),以检查每个步骤的值并将其添加到问题中(包括更改的代码和日志行)?是否为dotnet core?对它是严格意义上的dotnet核心吗?好问题。我会调查并扩展这个问题。我们正在发布。我希望回到这个问题上来。这是.net内核吗?是否有
HelperMethod
方法的重载?只有WebAPI方法才会遇到这个问题吗?它在普通控制台应用程序中工作,请参阅。是否可以在方法中添加多个日志行(或
Console.WriteLine
/
Debug.WriteLine()
调用),以检查每个步骤的值并将其添加到问题中(包括更改的代码和日志行)?是否为dotnet core?对它是严格意义上的dotnet核心吗?好问题。我会调查并扩展这个问题。我们正在发布。我希望回到这个问题上来。