У меня есть класс, который я сериализую в MongoDB как BsonDocument
, этот класс также имеет свойство типа IMyInterface
.
public interface IMyInterface
{
String Name { get; set; }
}
public class MyClass
{
public IMyInterface IntRef { get; set; }
}
В течение MyClass
времени жизни экземпляров объектов IntRef
может ссылаться на несколько разных классов, реализующих IMyInterface
. После сериализации я обнаружил, что все данные из класса, на который указывает IntRef
, также сериализуются в BsonDocument
, а не только Name
.
Однако при десериализации BsonDocument.Deserialize
не имеет информации о Type
класса, на который указывает IntRef
, и выдает исключение. Как я могу предоставить информацию Type
для моего звонка Deserialize
?
У меня также есть наивный обходной путь, когда я Deserialize
часть документа, которая является IntRef
, работает хорошо. Учитывая правильный класс Type
, BsonDocument.Deserialize
возвращает экземпляр объекта этого Type
. Хотя проблема здесь в том, что я все еще не могу Deserialize
верхнего уровня BsonDocument
представлять MyClass
, потому что он все еще содержит поддокумент, относящийся к IntRef
. Есть ли способ заставить Deserialize
игнорировать часть BsonDocument
? Мне пришла в голову идея просто установить MyBsonDocument[SubDocName] = null
, несмотря на то, что оно не может принимать значения NULL.
ClassMap
может быть частью ответа. Надо будет глянуть, такого я еще не видел. - person KDecker   schedule 05.04.2016