Exemplo n.º 1
0
        // public static methods
        /// <summary>
        /// Gets the serialization info for the node utilizing precalculated serialization information.
        /// </summary>
        /// <param name="node">The expression.</param>
        /// <param name="serializationInfoCache">The serialization info cache.</param>
        /// <returns>BsonSerializationInfo for the expression.</returns>
        public static BsonSerializationInfo GetSerializationInfo(Expression node, Dictionary <Expression, BsonSerializationInfo> serializationInfoCache)
        {
            var finder            = new BsonSerializationInfoFinder(serializationInfoCache);
            var serializationInfo = finder.Visit(node);

            if (serializationInfo == null)
            {
                string message = string.Format("Unable to determine the serialization information for the expression: {0}.",
                                               ExpressionFormatter.ToString(node));
                throw new NotSupportedException(message);
            }

            return(serializationInfo);
        }
        // public methods
        /// <summary>
        /// Gets the serialization info for the given expression.
        /// </summary>
        /// <param name="node">The expression.</param>
        /// <returns>The serialization info.</returns>
        public BsonSerializationInfo GetSerializationInfo(Expression node)
        {
            var evaluatedNode = PartialEvaluator.Evaluate(node);

            return(BsonSerializationInfoFinder.GetSerializationInfo(evaluatedNode, _serializationInfoCache));
        }