private static String GetSimpleTypeName(Type t) { String result = XmlPrimitiveSerializer.TryGetPrimitiveTypeName(t); if (result == null) { if (t.IsArray) { result = "ArrayOf" + FirstLetterUpper(GetSimpleTypeName(t.GetElementType())); } else if (t.GetInterface("ICollection`1") != null) { // for backward compat var elementType = t.GetInterface("ICollection`1").GetGenericArguments()[0]; result = "ArrayOf" + FirstLetterUpper(GetSimpleTypeName(elementType)); } else if (t.IsGenericType) { result = t.Name.Split('`')[0] + "Of" + String.Join(String.Empty, t.GetGenericArguments().Select(GetSimpleTypeName)); } else { result = t.Name; } } return(result); }
internal static XmlNameDeclaration GetRootNameForType(Type t) { XmlNameDeclaration result = XmlPrimitiveSerializer.TryGetPrimitiveTypeName(t).Bind(str => new XmlNameDeclaration(str)); if (result == null) { var rootAttr = t.GetCustomAttributes <XmlRootAttribute>(inherit: false).FirstOrDefault(); if (rootAttr != null) { result = new XmlNameDeclaration(rootAttr.ElementName, rootAttr.Namespace); } else { result = new XmlNameDeclaration(GetSimpleTypeName(t)); } } return(result); }