Passing an anonymous object as an argument in C#

anonymous, c#, dynamic, ienumerable, object

Solution

It looks like you want:

class Test
{
    public static string TestMethod(dynamic obj)
    {
        return obj.txt;
    }
}

You're using it as if it's a single value, not a sequence. Do you really want a sequence?

Problem

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?)

Original source