【发布时间】:2011-03-15 16:59:17
【问题描述】:
我在这里遇到了一些问题,是否有正确的方法来检查 XmlSchemaParticle 是否为 EmptyParticle?
XmlSchemaParticle.EmptyParticle 似乎是XmlSchemaParticle 的私有内部类。
我现在正在做的是particle.GetType().Name == "EmptyParticle",我觉得它很丑。
还有其他选择吗?
【问题讨论】:
我在这里遇到了一些问题,是否有正确的方法来检查 XmlSchemaParticle 是否为 EmptyParticle?
XmlSchemaParticle.EmptyParticle 似乎是XmlSchemaParticle 的私有内部类。
我现在正在做的是particle.GetType().Name == "EmptyParticle",我觉得它很丑。
还有其他选择吗?
【问题讨论】:
我今天遇到了同样的问题。我可以通过检查XmlSchemaComplexType.ContentType 属性来解决它:
public bool HasEmptyParticle(XmlSchemaComplexType type)
{
return type.ContentTypeParticle != null && type.ContentType == XmlSchemaContentType.Empty;
}
【讨论】:
XmlSchemaContentType.TextOnly 返回了一个空粒子。
【讨论】:
我认为您应该将任何ContentTypeParticle 与MaxOccurs == 0 视为空。
【讨论】:
EmptyParticle 类的目的。
EmptyParticle 是非公开的显然意味着它不是供外部使用的。无论他们在内部做什么(或不做什么)都不意味着XmlSchemaParticle 的用户知道。
EmptyParticle 和 MaxOccurs > 0。
我知道这是旧的,但是如果您检查 ContentTypeParticle 是否不公开怎么办。
如果 (!type.ContentTypeParticle.GetType().IsPublic) {
}
我知道您专门测试空,但我们可以假设内部/私有对象类型反映空吗?
【讨论】:
particle.GetType().Name == "EmptyParticle" 脏得多——也可能(而且肯定是)完全错误。没有什么告诉我EmptyParticle 是唯一的私有粒子类型。