I have a problem with passing an anonymous object as an argument in a method. I want to pass the object like in JavaScript. Example:
function Test(obj) {
return obj.txt;
}
console.log(Test({ txt: "test"}));
But in C#, it throws many exceptions:
class Test
{
public static string TestMethod(IEnumerable<dynamic> obj)
{
return obj.txt;
}
}
Console.WriteLine(Test.TestMethod(new { txt = "test" }));
Exceptions:
- Argument 1: cannot convert from ‘AnonymousType#1’ to
‘System.Collections.Generic.IEnumerable’ - The best overloaded method match for
‘ConsoleApplication1.Test.TestMethod(System.Collections.Generic.IEnumerable)’
has some invalid arguments - ‘System.Collections.Generic.IEnumerable’ does not contain a
definition for ‘txt’ and no extension method ‘txt’ accepting a first
argument of type ‘System.Collections.Generic.IEnumerable’
could be found (are you missing a using directive or an assembly
reference?)
It looks like you want:
You’re using it as if it’s a single value, not a sequence. Do you really want a sequence?