[英]How to add some class to div element, depending of some condition in Razor?
[英]how to serialize some attribute in some condition
使用XML序列化序列化类时,如何有条件地输出某些属性。 即在某些情况下,它输出此属性,在其他情况下,它不输出。
您可以创建一个名为MyPropertySpecified
的附加属性,该属性返回一个布尔值。
当此属性返回true时,将序列化MyProperty
属性。 当它返回false时,它不会被序列化。
此外,您还希望使用XmlIgnoreAttribute
修饰该属性,以便不对此特定属性进行序列化。
例:
public class Person
{
public string Name
{
get;
set;
}
[XmlIgnore]
public bool NameSpecified
{
get { return Name != "secret"; }
}
}
虽然有效并且是一个相当简短的解决方案,但我认为propertyNameSpecified
模式有一些缺点(污染类的接口;依赖于属性名称;引入隐式行为)。
如果您只需要实现一个简单的条件(例如,不要序列化默认值),那么DefaultValue
属性是更好的选择。
例如:
public class PurchaseOrder
{
[DefaultValue("2002")]
public string Year;
}
如果Year具有值“2002”,则将从XML输出中省略它。
您可以在序列化时使用OnSerializingAttribute ,这允许我们在序列化之前调用方法。 您可以在此处获取有关它的更多信息
Imho你需要在类上实现IXmlSerializable并实现WriteXml和ReadXml方法,这样它们只能根据你指定的条件写入属性,并且可以在反序列化时处理带有或不带有特定属性的读取。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.