Фильтрация в монго по интерфейсу

У меня есть коллекция монго, которую я хочу ввести в интерфейс. Он должен содержать несколько конкретных типов, каждый из которых реализует этот интерфейс. Однако при выполнении запросов, если я использую интерфейс, он сообщает мне, что не может найти информацию о сериализации. Образец кода:

var collection = database.GetCollection<ITestInterface>("TestCollection2");
var filter = Builders<ITestInterface>.Filter.Eq(x => x.Number, 42);
var items = collection.FindSync(filter);

Это приводит к исключению с сообщением: «Невозможно определить информацию о сериализации для x => x.Number».

Есть ли способ сообщить драйверам, как сериализовать вещи на интерфейсе? Я могу найти обходной путь, который требует, чтобы все мои типы имели общий базовый класс, а затем я могу сделать что-то вроде:

var filter = Builders<BaseClass>.Filter.Eq(x => x.Number, 42);
var items = collection.OfType<BaseClass>().FindSync(filter);

Однако я бы предпочел не делать этого и вместо этого заставить драйверы находить информацию о сериализации, необходимую для интерфейсов.

Итак, есть ли способ сообщить драйверам, как сериализовать вещи на интерфейсе или как-то иначе заставить работать первый блок кода?


person Chris    schedule 04.10.2018    source источник
comment
[stackoverflow.com/questions/14561809/ Это может ответить на ваш вопрос   -  person Rakshith Murukannappa    schedule 04.10.2018