作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个类,如下所示:
[Serializable]
[XmlInclude(typeof(SomeDerived))]
public class SomeBase
{
public string SomeProperty { get; set; }
}
public class SomeDerived : SomeBase
{
[XmlIgnore]
public new string SomeProperty { get; set; }
}
SomeDerived
的实例时我不希望看到
SomeProperty
的值.不过,我愿意。我尝试过其他方法,例如使用
SomeProperty
声明为
virtual
在
SomeBase
并在
SomeDerived
中覆盖它.我仍然在
SomeDerived
的序列化实例中看到它.
XmlIgnoreAttribute
是怎么回事? ?
class Program
{
static void Main(string[] args)
{
SomeDerived someDerived = new SomeDerived { SomeProperty = "foo" };
XmlSerializer ser = new XmlSerializer(typeof(SomeBase));
MemoryStream memStream = new MemoryStream();
XmlTextWriter xmlWriter = new XmlTextWriter(memStream, Encoding.Default);
ser.Serialize(memStream, someDerived);
xmlWriter.Close();
memStream.Close();
string xml = Encoding.Default.GetString(memStream.GetBuffer());
Console.WriteLine(xml);
Console.ReadLine();
}
}
new XmlSerializer(typeof(SomeDerived))
,我会得到相同的行为.
最佳答案
试试这个。它使用 XmlSerializer 构造函数上的覆盖来传递一些序列化覆盖:
SomeDerived someDerived = new SomeDerived { SomeProperty = "foo" };
// Create the XmlAttributeOverrides and XmlAttributes objects.
XmlAttributeOverrides overrides = new XmlAttributeOverrides();
XmlAttributes attrs = new XmlAttributes();
/* Use the XmlIgnore to instruct the XmlSerializer to ignore
the GroupName instead. */
attrs = new XmlAttributes();
attrs.XmlIgnore = true;
overrides.Add(typeof(SomeBase), "SomeProperty", attrs);
XmlSerializer ser = new XmlSerializer(typeof(SomeBase), overrides);
MemoryStream memStream = new MemoryStream();
XmlTextWriter xmlWriter = new XmlTextWriter(memStream, Encoding.Default);
ser.Serialize(memStream, someDerived);
xmlWriter.Close();
memStream.Close();
string xml = Encoding.Default.GetString(memStream.GetBuffer());
关于c# - 了解 System.Xml.Serialization.XmlIgnoreAttribute 与基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3397331/
我对 .NET 的理解是否正确 XmlIgnoreAttribute ,其中说: Instructs the Serialize method of the XmlSerializer not to
我有一个抽象基类,我在其中添加了一些虚拟属性。我想要的是,在我的派生类中,指定在序列化(和反序列化过程)期间忽略特定的基类属性。如下所示,BaseClass 类中的 Value 属性被声明为 virt
假设您的实体模型中有一对一的关系。代码生成器将使用以下属性来装饰它: [global::System.Xml.Serialization.XmlIgnoreAttribute()] [global::
如何在 XSD 中指定属性,以便在使用 XSD 工具生成 C# 类时,特定属性生成为具有 XMLIgnore 属性的属性? 如何调整 XSD 或生成 C# 代码以获得类似的东西, [Serializa
我有两个类,如下所示: [Serializable] [XmlInclude(typeof(SomeDerived))] public class SomeBase { public stri
我是一名优秀的程序员,十分优秀!