/* Copyright 2010-2014 MongoDB Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using MongoDB.Bson.IO; namespace MongoDB.Bson.Serialization { /// /// An interface implemented by classes that handle their own BSON serialization. /// public interface IBsonSerializable { /// /// Deserializes this object from a BsonReader. /// /// The BsonReader. /// The nominal type of the object. /// The serialization options. /// Normally itself, though sometimes an instance of a subclass or null. object Deserialize(BsonReader bsonReader, Type nominalType, IBsonSerializationOptions options); /// /// Gets the document Id. /// /// The Id. /// The nominal type of the Id. /// The IdGenerator for the Id type. /// True if the document has an Id. bool GetDocumentId(out object id, out Type idNominalType, out IIdGenerator idGenerator); /// /// Serializes this object to a BsonWriter. /// /// The BsonWriter. /// The nominal type of this object. /// The serialization options. void Serialize(BsonWriter bsonWriter, Type nominalType, IBsonSerializationOptions options); /// /// Sets the document Id. /// /// The Id. void SetDocumentId(object id); } }