0

我在 Windows Phone App 中有一些课程:

[DataContract]
public class Function
{
    [DataMember(Name = "params")]
    public Params Parametrs { get; set; }
}

[DataContract]
public class Params
{
    [DataMember(Name = "params1")]
    public bool Params1 { get; set; }

    [DataMember(Name = "params2")]
    public string Params2 { get; set; }

    [DataMember(Name = "params3")]
    public MyClass Params3 { get; set; }
 }


public string GetRequestString(Params parametrs)
{
    Function func = new Function()
            {    
                Parametrs = parametrs
            };
    string json = JsonConvert.SerializeObject(func);
    return json;
}

Params params = new Params()
  {
        Params1 = true,
        Params2 = "MyString",
        Params3 = myClassObject,
  }

  var json = GetRequestString(params);

我的问题是Params1,Params2等可以有不同的类型。我不能在一类参数中定义它。

我可以将一组参数、类型、键传递给函数并在 JSON 中序列化吗?

JsonConvert 这可能吗?

4

2 回答 2

2

由于 c# 是一种强类型语言,它要求在编译时定义属性的类型。但是,如果需要动态对象,可以使用Object基类。但是,您可能需要在使用之前将它们转换或转换为相关类型。

[DataContract]
public class Params
{
    [DataMember(Name = "params1")]
    public object Params1 { get; set; }

    [DataMember(Name = "params2")]
    public object Params2 { get; set; }

    [DataMember(Name = "params3")]
    public object Params3 { get; set; }
}

Params param = new Params()
{
    Params1 = true,
    Params2 = "MyString",
    Params3 = new Object(),
};

var json = GetRequestString(param);
于 2013-10-22T09:31:28.377 回答
0

jsonconvert 可以在这里序列化它尝试属性名称到数据成员 Name="" 例如:

[DataMember(Name = "Params1")]
 public bool Params1 { get; set; }
于 2013-10-22T09:26:32.967 回答