2016-08-03 31 views
0

嘗試在C#MongoDB中執行搜索查詢時出現以下錯誤。MongoDB錯誤:無法確定要反序列化的接口類型的對象的實際類型

An exception of type 'System.FormatException' occurred in MongoDB.Bson.dll but was not handled in user code Additional information: An error occurred while deserializing the FOMessages property of class XYZ: Unable to determine actual type of object to deserialize for interface type IXYZ.

的代碼:

public interface IMessage 
{ 
    MChannel Channel { get; } 
} 

MChannel是枚舉類型。

public abstract class XYZ : IXYZ 
{ 
    public List<IXYZ> FOMessages { get; set; } 
} 

下面是一些方法SearchXYZ我的搜索查詢。

MongoCursor<BsonDocument> searchMessages = 
    context.GetDatabase() 
      .GetCollection<BsonDocument>(typeof(Message).Name) 
      .Find(Query.And(searchMongoQuery)); 

return searchMessages 
     .ToList() 
     .Select(message => DeserializeToTypedObject(message, (MChannel)(int)message["Channel"])) 
     .ToList(); 

DeserializeToTypedObject方法:

private Message DeserializeToTypedObject(BsonDocument document, MChannel channel) 
    { 
     switch (channel) 
     { 
      case MChannel.EMAIL: 
       return BsonSerializer.Deserialize<EmailMessage>(document); 

      case MChannel.SMS: 
       return BsonSerializer.Deserialize<SMSMessage>(document); 

      case MChannel.VOICE: 
       return BsonSerializer.Deserialize<VoiceMessage>(document); 

      default: 
       return null; 
     } 
    } 

的代碼的方法中DeserializeToTypedObject失敗。

任何線索?

在此先感謝!

回答

0

我找到了解決方案。我們以字符串格式插入對象,以便在從mongoDB中檢索時失敗

相關問題