Inheritance: System.Runtime.Serialization.DataContract
            public static bool TryCreateBuiltInDataContract(Type type, out DataContract dataContract)
            {
                if (type.IsEnum)
                {
                    dataContract = null;
                    return false;
                }
                dataContract = null;
                switch (Type.GetTypeCode(type))
                {
                    case TypeCode.Boolean:
                        dataContract = new BooleanDataContract();
                        break;

                    case TypeCode.Char:
                        dataContract = new CharDataContract();
                        break;

                    case TypeCode.SByte:
                        dataContract = new SignedByteDataContract();
                        break;

                    case TypeCode.Byte:
                        dataContract = new UnsignedByteDataContract();
                        break;

                    case TypeCode.Int16:
                        dataContract = new ShortDataContract();
                        break;

                    case TypeCode.UInt16:
                        dataContract = new UnsignedShortDataContract();
                        break;

                    case TypeCode.Int32:
                        dataContract = new IntDataContract();
                        break;

                    case TypeCode.UInt32:
                        dataContract = new UnsignedIntDataContract();
                        break;

                    case TypeCode.Int64:
                        dataContract = new LongDataContract();
                        break;

                    case TypeCode.UInt64:
                        dataContract = new UnsignedLongDataContract();
                        break;

                    case TypeCode.Single:
                        dataContract = new FloatDataContract();
                        break;

                    case TypeCode.Double:
                        dataContract = new DoubleDataContract();
                        break;

                    case TypeCode.Decimal:
                        dataContract = new DecimalDataContract();
                        break;

                    case TypeCode.DateTime:
                        dataContract = new DateTimeDataContract();
                        break;

                    case TypeCode.String:
                        dataContract = new StringDataContract();
                        break;

                    default:
                        if (type == typeof(byte[]))
                        {
                            dataContract = new ByteArrayDataContract();
                        }
                        else if (type == typeof(object))
                        {
                            dataContract = new ObjectDataContract();
                        }
                        else if (type == typeof(Uri))
                        {
                            dataContract = new UriDataContract();
                        }
                        else if (type == typeof(XmlQualifiedName))
                        {
                            dataContract = new QNameDataContract();
                        }
                        else if (type == typeof(TimeSpan))
                        {
                            dataContract = new TimeSpanDataContract();
                        }
                        else if (type == typeof(Guid))
                        {
                            dataContract = new GuidDataContract();
                        }
                        else if ((type == typeof(Enum)) || (type == typeof(ValueType)))
                        {
                            dataContract = new SpecialTypeDataContract(type, DictionaryGlobals.ObjectLocalName, DictionaryGlobals.SchemaNamespace);
                        }
                        else if (type == typeof(Array))
                        {
                            dataContract = new CollectionDataContract(type);
                        }
                        else if ((type == typeof(XmlElement)) || (type == typeof(System.Xml.XmlNode[])))
                        {
                            dataContract = new XmlDataContract(type);
                        }
                        break;
                }
                return (dataContract != null);
            }