Я получаю ObservableCollection и желаю иметь условия, а также порядок в моем конструкторе.OrderBy in constructor
следующие в порядке с условием работы, но я не могу сделать это с OrderBy :(
public class CustomCollection<TModel> : ObservableCollection<TModel> where TModel : EntityBaseClass
{
private readonly Func<TModel, bool> _condition;
public CustomCollection(ObservableCollection<TModel> source, Func<TModel, bool> condition)
: base(source.Where(condition))
{
_condition = condition;
}
}
То, что я пытался это продлить конструктор со следующим параметром
Func<TModel, TModel> orderby
и изменить: базовый вызов
: base(source.Where(condition).OrderBy(orderby))
Это создает без проблем, , но когда я пытаюсь называть это так:
new CustomCollection<TestClass>(SourceCollection, x => x.Price == 2.50, x => x.SortOrder);
Я получаю следующее сообщение.
«Невозможно преобразовать тип выражения« строка », чтобы вернуть тип« TestClass ».
Какое любопытное имеет смысл, поскольку мое состояние имеет
Func<TModel, TModel> condition
который является TestClass указанный в два раза, когда я смотрю на реализации OrderBy я могу увидеть TSource и TKEY, но, как я в состоянии указать TKey в моем случае?
Надеюсь, вы можете мне помочь.
С этим я вынужден инициализировать с помощью нового CustomCollection (....); или? –
@RandRandom Аргумент второго типа должен быть типом того, что вы сортируете, а не вашей моделью (если это не то, что вы сортируете). Вы также можете создавать общие заводские методы, а не использовать конструктор, чтобы вы могли использовать вывод типового типа. – Servy
Не могли бы вы предложить решение упомянутой альтернативы (заводская фабрика)? –