private DataContractProxy GetContract(TypeProxy type)
        {
            if (type.IsClass || type.IsValueType || type.IsEnum)
            {
                DataContractProxy contract = null;

                if (!_typeContracts.TryGetValue(type, out contract))
                {
                    contract = type.GetDataContract();

                    _typeContracts.Add(type, contract);
                }

                return(contract);
            }

            return(null);
        }