Фильтрация в монго по интерфейсу - PullRequest
0 голосов
/ 04 октября 2018

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

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);

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...