Код: Выделить всё
public abstract class Test { }
public class ConcreteTest1: Test
{
public string Foo {get; set; }
//...
}
public class ConcreteTest2: Test
{
public int AnInt { get; set; }
//...
}
public class TestScript
{
public ObjectId _id { get; set; } = new();
public string PartNumber { get; set; }
public IList Tests { get; set; } = [];
}
System.FormatException: «Произошла ошибка при десериализации свойства Tests класса TestScript: невозможно создать экземпляр Test, поскольку это абстрактный класс».
Мой документ MongoDB выглядит так:
Код: Выделить всё
{
"_id": {
"$oid": "6780467598922ae42e13a832"
},
"PartNumber": "1234-12345-12",
"Tests": [
{
"_t": "ConcreteTest1",
"Foo": "bar",
...
},
{
"_t": "ConcreteTest2",
"AnInt": 42
...
}
]
}
Код: Выделить всё
var collection = db.GetCollection("TestScripts");
var testScript = await collection.Find(ts => ts.PartNumber == partNumber).SingleOrDefaultAsync(cancellationToken);
return testScript?.Tests ?? [];
Это моя первая попытка использования MongoDB, поэтому, пожалуйста, дайте мне знать, если я в других отношениях я делаю это неправильно.
Подробнее здесь: https://stackoverflow.com/questions/793 ... ract-class
Мобильная версия