public XmlMembersMapping ImportMembersMapping(XmlQualifiedName[] names, Type baseType, bool baseTypeCanBeIndirect)
{
CodeIdentifiers memberScope = new CodeIdentifiers();
memberScope.UseCamelCasing = true;
MemberMapping[] members = new MemberMapping[names.Length];
for (int i = 0; i < names.Length; i++)
{
XmlQualifiedName name = names[i];
ElementAccessor accessor = ImportElement(name, typeof(TypeMapping), baseType);
if (baseType != null && accessor.Mapping is StructMapping)
MakeDerived((StructMapping)accessor.Mapping, baseType, baseTypeCanBeIndirect);
MemberMapping member = new MemberMapping();
member.Name = CodeIdentifier.MakeValid(Accessor.UnescapeName(accessor.Name));
member.Name = memberScope.AddUnique(member.Name, member);
member.TypeDesc = accessor.Mapping.TypeDesc;
member.Elements = new ElementAccessor[] { accessor };
members[i] = member;
}
MembersMapping mapping = new MembersMapping();
mapping.HasWrapperElement = false;
mapping.TypeDesc = Scope.GetTypeDesc(typeof(object[]));
mapping.Members = members;
ElementAccessor element = new ElementAccessor();
element.Mapping = mapping;
return new XmlMembersMapping(Scope, element, XmlMappingAccess.Read | XmlMappingAccess.Write);
}