本文整理匯總了C#中System.Xml.Schema.XmlSchemaComplexType.CreateSchemaSequenceParticle方法的典型用法代碼示例。如果您正苦於以下問題:C# XmlSchemaComplexType.CreateSchemaSequenceParticle方法的具體用法?C# XmlSchemaComplexType.CreateSchemaSequenceParticle怎麽用?C# XmlSchemaComplexType.CreateSchemaSequenceParticle使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類System.Xml.Schema.XmlSchemaComplexType
的用法示例。
在下文中一共展示了XmlSchemaComplexType.CreateSchemaSequenceParticle方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。
示例1: GenerateSchemaTypeObjects
/// <summary>
/// </summary>
public override void GenerateSchemaTypeObjects(PropertyInfo property, XmlSchemaType type, int level)
{
var atts = GetAttributes<ConfigurationPropertyAttribute>(property);
if (atts.Length == 0)
return;
XmlSchemaComplexType ct;
if (Generator.ComplexMap.ContainsKey(property.PropertyType))
{
//already done the work
ct = Generator.ComplexMap[property.PropertyType];
}
else
{
// got to generate a new one
ct = new XmlSchemaComplexType { Name = atts[0].Name + "CT" };
ct.AddAnnotation(property, null);
ct.CreateSchemaSequenceParticle();
Generator.ComplexMap.Add(property.PropertyType, ct);
Generator.Schema.Items.Add(ct);
// get all properties from the configuration object
var propertyInfos = GetProperties<ConfigurationPropertyAttribute>(property.PropertyType);
foreach (var pi in propertyInfos)
{
var parser = TypeParserFactory.GetParser(Generator, pi);
parser.GenerateSchemaTypeObjects(pi, ct, level + 1);
}
}
var element = new XmlSchemaElement
{
Name = atts[0].Name, // property.PropertyType.Name + "CT",
MinOccurs = atts[0].IsRequired ? 1 : 0,
SchemaTypeName = new XmlQualifiedName(XmlHelper.PrependNamespaceAlias(ct.Name))
};
var pct = (XmlSchemaComplexType) type;
((XmlSchemaGroupBase) pct.Particle).Items.Add(element);
// add the documentation
element.AddAnnotation(property, atts[0]);
}
示例2: AddCollectionChildren
/// <summary>
/// Adds the child elements of the collection
/// </summary>
protected void AddCollectionChildren(XmlSchemaGroupBase parentParticle, ConfigurationCollectionAttribute configCollAttribute, int level)
{
Debug.IndentLevel = level;
XmlSchemaComplexType ct;
if (Generator.ComplexMap.ContainsKey(configCollAttribute.ItemType))
{
//already done the work
ct = Generator.ComplexMap[configCollAttribute.ItemType];
}
else
{
// got to generate a new one for the collection
ct = new XmlSchemaComplexType { Name = configCollAttribute.ItemType.Name + "CT" };
ct.CreateSchemaSequenceParticle();
Generator.ComplexMap.Add(configCollAttribute.ItemType, ct);
Generator.Schema.Items.Add(ct);
}
// add method
var addElement = new XmlSchemaElement
{
Name = configCollAttribute.AddItemName,
MinOccurs = 0,
SchemaTypeName = new XmlQualifiedName(XmlHelper.PrependNamespaceAlias(ct.Name))
};
// ok we now have the child element as a complextype object
// but we need to add three elements to the parent complex type
// which support the add / remove / clear methods of the collection
// if we must add a clear method then it has to come first
// the basic map types do not include the clear and remove methods
if (configCollAttribute.CollectionType == ConfigurationElementCollectionType.AddRemoveClearMap ||
configCollAttribute.CollectionType == ConfigurationElementCollectionType.AddRemoveClearMapAlternate)
{
// clear method (which is a simple element)
var element = new XmlSchemaElement
{
Name = configCollAttribute.ClearItemsName,
MinOccurs = 0,
MaxOccurs = 1,
//SchemaType = new XmlSchemaComplexType()
};
parentParticle.Items.Add(element);
// remove method
element = new XmlSchemaElement
{
MinOccurs = 0,
Name = configCollAttribute.RemoveItemName
};
var removeCt = new XmlSchemaComplexType();
element.SchemaType = removeCt;
// get the type contained in the collection and work out
// what the key property is
var childElementType = configCollAttribute.ItemType;
var found = false;
foreach (var pi in childElementType.GetProperties())
{
if (found)
break;
Debug.WriteLine("Child property: " + pi.Name);
var cpAtts = GetAttributes<ConfigurationPropertyAttribute>(pi);
// this should return a standardtypeparser object, if it doesnt
// then it means that the key of the element was an element
// itself and I don't think that is possible!
if (cpAtts.Any(att => att.IsKey))
{
var parser = TypeParserFactory.GetParser(Generator, pi);
parser.GenerateSchemaTypeObjects(pi, removeCt, level + 1);
found = true;
}
}
parentParticle.Items.Add(element);
SetMaxOccurs(element, parentParticle);
}
SetMaxOccurs(addElement, parentParticle);
parentParticle.Items.Add(addElement);
// get all properties from the configuration object
var propertyInfos = GetProperties<ConfigurationPropertyAttribute>(configCollAttribute.ItemType);
foreach (var pi in propertyInfos)
{
var parser = TypeParserFactory.GetParser(Generator, pi);
Debug.WriteLine("\tConfigurationProperty: {0} {1}", pi.Name, parser.GetType());
//.........這裏部分代碼省略.........