Причина, по которой вы получаете эту ошибку, заключается в том, что MongoDB. NET драйвер не знает, как разрешить IProductDetail
, и пытается создать экземпляр класса ProductDetail
, поскольку существует поле _t
, представляющее этот тип. хранится в MongoDB.
Обычно вы можете использовать BsonKnownTypes
в сценарии polymorphi c , но он работает только для классов и структур. Поэтому, если вы хотите сохранить здесь некоторую иерархию классов, вам нужно ввести абстрактный класс и применить этот атрибут там.
[BsonKnownTypes(typeof(ProductDetail))]
public abstract class ProductDetailBase: IProductDetail
{
}
public class ProductDetail : ProductDetailBase
{
public Guid ProductDetailId { get; set; }
public string ProductDetailCode { get; set; }
}
, а затем вы можете использовать:
public List<ProductDetailBase> ProductDetailList { get; set; } = new List<ProductDetailBase>();
В таких Если у вас есть иерархия классов и MongoDB. NET драйвер десериализует ваш документ BSON в соответствующий дочерний класс во время выполнения.