У меня есть класс ProductDiscount в C #. Другие классы наследуются от него (FlatDiscount, PercentageDiscount и т. Д.).
Кажется, что хранение данных в Elastic работает, но я не могу прочитать данные из Elastic.
Я получаю эту ошибку:
Не удалось создать экземпляр типа ProductDiscount. Тип является интерфейсом или абстрактным классом и не может быть создан. Путь 'discount.amount', строка 1, позиция 1098.
Когда я смотрю на свой индекс, скидка действительно сохраняется в коллекции, но нет указания на тип класса.
Можно ли отобразить абстрактное свойство в c # с помощью клиента nest?
Я пробовал с этим дескриптором отображения, но безуспешно:
mappingsDescriptor.Map<Product>(x => x
.Properties(props => props
.Object<ProductDiscount>(o => o.Name(prop => prop.Discount))
.Object<FlatProductDiscount>(o => o.Name(prop => prop.Discount).AutoMap())
.Object<PercentageProductDiscount>(o => o.Name(prop => prop.Discount).AutoMap())
.Object<FreeProductProductDiscount>(o => o.Name(prop => prop.Discount).AutoMap())
.Object<QuantityProductDiscount>(o => o.Name(prop => prop.Discount).AutoMap())
)
);
Чтение выполняется с помощью ElasticClient:
var result = await ElasticClient.SearchAsync<Product>(new SearchRequest(Indices.Index(index: CollectionName)));