我在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
等可以有不同的类型。我不能在一个类Params中定义它。
我可以将一组参数,类型,键传递给函数并将其序列化为JSON吗?
JsonConvert有可能吗?
答案 0 :(得分: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);
答案 1 :(得分:0)
jsonconvert可以在这里序列化try属性名称为datamember Name =“” 例如:
[DataMember(Name = "Params1")]
public bool Params1 { get; set; }