previous question
,我很难将懒惰的人结合起来<T>我的XML序列化建议使用的泛型。
public struct Lazy<T> where T : class, new()
{
private T _Value;
public bool HasValue
{
get
{
return (_Value != null);
}
}
public T Value
{
get
{
if (!HasValue)
_Value = new T();
return _Value;
}
}
}
MSDN Docs
假设在一个属性上有一个[XmlElement(“ElementName”)]是可以的,而且它确实能够很好地反序列化。当我序列化一个对象时,问题就出现了。我正在运行以下代码:
class SomeClass
{
[XmlElement("ExternalElementName")]
public ComplexElementType InternalElementName
{
get { return _InternalElementName.Value; }
}
protected Lazy<ComplexElementType> _InternalElementName;
}
SomeClass someClass = new SomeClass();
someClass.InternalElementName.ComplexElementTypeChild = "some string";
// serialize...
奇怪的是,这在调试器中运行良好,但XML中没有输出任何元素。不懒惰<T>元素运行良好。有什么想法吗?