あなたの例のクラスを考えると、私はあなたがこのような何かを探していると思う:
public bool ShouldSerializeSample()
{
return (Sample != null && (Sample.Id != 0 || Sample.name != null));
}
ここで働いてデモです:ここでは
class Program
{
static void Main(string[] args)
{
List<Container> list = new List<Container>
{
new Container
{
Cname = "Will serialize Sample because it has a name",
Sample = new Sample1 { name = "sample 1" }
},
new Container
{
Cname = "Will serialize Sample because it has a non-zero Id",
Sample = new Sample1 { Id = 2 }
},
new Container
{
Cname = "Will serialize Sample because it has a name and an Id",
Sample = new Sample1 { name = "sample 3", Id = 3 }
},
new Container
{
Cname = "Will not serialize Sample because it has default values",
Sample = new Sample1()
},
new Container
{
Cname = "Will not serialize Sample because it is null",
Sample = null
}
};
string json = JsonConvert.SerializeObject(list, Formatting.Indented);
Console.WriteLine(json);
}
}
public class Sample1
{
public String name { get; set; }
public int Id { get; set; }
}
public class Container
{
public String Cname { get; set; }
public Sample1 Sample { get; set; }
public bool ShouldSerializeSample()
{
return (Sample != null && (Sample.Id != 0 || Sample.name != null));
}
}
が出力されます。
[
{
"Cname": "Will serialize Sample because it has a name",
"Sample": {
"name": "sample 1",
"Id": 0
}
},
{
"Cname": "Will serialize Sample because it has a non-zero Id",
"Sample": {
"name": null,
"Id": 2
}
},
{
"Cname": "Will serialize Sample because it has a name and an Id",
"Sample": {
"name": "sample 3",
"Id": 3
}
},
{
"Cname": "Will not serialize Sample because it has default values"
},
{
"Cname": "Will not serialize Sample because it is null"
}
]
あなたが「割り当てられていない新しい価値」とはどういう意味ですか?あなたは例を挙げることができますか? –
これは、Object型のプロパティがデフォルト値を持つ独自のプロパティを持つことを意味します。 – Madhu
答えは 'Sample1'の例に依存します。たとえば、 'Sample1'が参照型で、デフォルト値が' null'の場合、 'Sample'プロパティが' null'でなければ 'true'を返し、そうでなければfalseを返します。 'Sample1'が独自のフィールドを持つオブジェクトである場合、' Sample1'のフィールドのどれかがデフォルト以外の値であれば 'true'を返し、そうでなければ' false'を返します。 – William