У меня есть простой интерфейс, IDevice
public interface IDevice{
string Id{ get; }
}
У меня есть список объектов, которые реализуют IDevice
List<IDevice> devices;
Пример двух типов объектов в этомВот список:
public class BatteryDevice : IDevice{
public string Id{ get; private set; }
public int StateOfCharge{ get; set; }
}
public class GridDevice : IDevice{
public string Id{ get; private set; }
public decimal Voltage{ get; set; }
}
Я хочу разрешить пользователю устанавливать условие в тексте с помощью SQL-запроса, например, так:
Id = 'Battery1' AND StateOfCharge > 95
, чтобы я мог прочитать эти условия из текстаКонфигурационный файл и сравните его со списком устройств, использующих динамический LINQ, следующим образом:
var matches = devices.Where("Id = 'Battery1' AND StateOfCharge > 95");
Это не работает, потому что (конечно) LINQ потерпит неудачу при попытке получить значение для StateOfCharge
изGridDevice
Я чувствую себя немного не в своей тарелке и ищу способ достичь своей цели и буду признателен за любой вклад.