当前位置: 首页 > 知识库问答 >
问题:

c#中属性的条件序列化

蒋哲
2023-03-14

我有几个具有许多属性的类。这些属性的值将根据某些条件分配。在将值分配给少数属性后,我想序列化对象并仅包括那些具有值分配给它们的道具。

我试过在网上搜索这个,但我找不到任何运气。

任何关于实施这一点的建议都将不胜感激。

更新:

我有一些课程

class A{
        public static string PropA_in_A { get; set; }
        public string PropB_in_A { get; set; }
        public static string PropC_in_A { get; set; }
        public static string PropD_in_A { get; set; }
}

class B{
        public static string PropA_in_B { get; set; }
        public static string PropB_in_B { get; set; }
        public static string PropC_in_B { get; set; }
        public static string PropD_in_B { get; set; }
}

class C{
        public static string PropA_in_C { get; set; }
        public static string PropB_in_C { get; set; }
        public static string PropC_in_C { get; set; }
        public static string PropD_in_C { get; set; }
}

这些类中属性的值需要根据条件进行分配。分配值后,只需要序列化那些已分配值的属性。

main()
{
A.PropB_in_A="Some Value";
A.PropA_in_B="Some Value";
A.PropC_in_C="Some Value";
}

这里,我想只序列化那些被赋值的属性。

共有1个答案

华恩
2023-03-14

您可以在每个属性上使用XmlEl战备属性并将IsNullable设置为false。

这里有一个关于MSDN的例子。

[XmlElementAttribute(IsNullable = false)]
public string City;

或者使用较短的形式:

[XmlElement(IsNullable = false)]
public string City;

编辑:对于可为空的值类型,您必须跳过一些额外的步骤,添加一个属性,告诉序列化程序是否应该序列化该值。

public bool ShouldSerializeMyNullableInt() 
{
  return MyNullableInt.HasValue;
}

请参阅此答案以供参考:Xml序列化-隐藏空值

 类似资料:
  • 问题内容: 我需要反序列化一些JSON表示的JavaScript对象为适当的C#类。鉴于自动属性的出色功能,我宁愿将它们放在这些类中,而不是仅包含字段。不幸的是,.NET序列化引擎(至少默认情况下)完全忽略了反序列化的自动属性,而只关心背景字段,而该字段显然不在JavaScript对象中。 鉴于没有标准的方法来命名后备字段并且说实话,我什至不想使用“让我们创建一个看起来像具有C#后备字段的Java

  • 问题内容: 我如何才能序列化一个特定的属性,但又防止其反序列化回POCO?是否可以使用属性装饰特定属性? 基本上,我正在寻找一个与ShouldSerialize *方法等效的反序列化方法。 我知道我可以编写一个自定义转换器,但是这样做似乎有点过头了。 编辑: 这里还有一些背景。这背后的原因是我的课看起来像: 我需要请求的属性,但是我不希望它反序列化并触发设置程序逻辑。 问题答案: 最简单的方法是将

  • 是一个代表SQL语句中的条件语句的接口。这是一个接口,这样其他类型的条件可以使用,并且允许最大的灵活性,以满足您的需求。 例如,写在原始的SQLite: 建议我们的查询从Model的属性中创造条件。 @Table(database = TestDatabase.class) public class TestModel3 { @PrimaryKey String name;

  • 我需要在定义的 POJO 列表中动态排除某些属性。要序列化的主要 POJO 是: id是被忽略,如果忽略id=true,像这样: 目前,我已经尝试使用< code>JsonFilter和< code>JacksonJsonViews但无法获得所需的输出。如果能给出实现这一目标的任何指示,我将非常高兴。

  • 问题内容: 如果我尝试序列化静态属性会怎样? 谢谢 问题答案: 从这篇文章: 提示1:处理静态变量 Java类通常在静态类变量中包含一些全局相关的值。我们不会进入有关全局变量是否适当的争论的悠久历史- 只能说程序员继续发现它们有用,而纯粹主义者建议的替代方案并不总是可行的。 对于声明时初始化的静态变量,序列化不会出现任何特殊问题。第一次使用该类时,相关变量将设置为正确的值。 某些静态无法通过这种方

  • 本文向大家介绍C#中的StringBuilder.Chars []属性,包括了C#中的StringBuilder.Chars []属性的使用技巧和注意事项,需要的朋友参考一下 StringBuilder.Chars []属性在此实例中获取或设置字符在指定字符位置。 语法 语法如下- 在上方,索引参数是字符的位置。 示例 现在让我们看一个例子- 输出结果 这将产生以下输出- 示例 现在让我们来看另一