0

Windows Phone アプリにいくつかのクラスがあります。

[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);

Params1Params2、などが異なるタイプを持つことができるという私の問題。1 つのクラス Params で定義することはできません。

パラメータ、タイプ、キーのセットを関数に渡して、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 はここでそれをシリアル化できます プロパティ名を datamember Name="" に試してください 例:

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