有没有办法在C#中模拟Javascript内部对象

时间:2016-07-20 02:41:01

标签: c#

在JavaScript中,我可以调用这样的函数:

x = myFunction({"meetingID": 2, "meetingRoom": "A103"});

myFunction()然后接收一个可以用JSON解析的对象,或者只是通过引用对象的属性来接收:

function myFunction( args ) {
    var x = args.meetingID;
}

C#中是否有类似的构造?是否存在“内联对象”或“即时对象”等内容?

3 个答案:

答案 0 :(得分:2)

您可以将anonymous typedynamic关键字结合使用。

void MyFunction(dynamic args)
{
    var x = args.MeetingId;
}

MyFunction(new { MeetingId = 2, MeetingRoom = "A103" });

注意 - 这与javascript不同。如果传递给MyFunction的对象不包含属性MeetingId,那么您将在运行时获得异常。

答案 1 :(得分:0)

你可以使用字典

public static void Main()
{
    myFunction(new Dictionary<string, object>()
        {
            { "meetingID", 2},
            { "meetingRoom", "A103"}
        }
    );
}

public static void myFunction(Dictionary<string,object> args)
{
    var x = args["meetingID"];
}

答案 2 :(得分:0)

只是一个小建议......如果可能的话,使用可选参数会更安全:

string myFunction( int meetingID = 0, string meetingRoom = null ) { 
    var x = meetingID;
}

然后你就可以使用它:

var x = myFunction( meetingID: 2, meetingRoom: "A103" );
var y = myFunction( meetingRoom:"A103" ); // order doesn't matter if you specify the parameter name
var z = myFunction( 3, "B109" );
var _ = myFunction();