Je souhaite écrire des contrôles de filtrage qui prennent le type d'objet T
et le nom de la propriété et renvoient Expression<Func<T, bool>>
qui vérifie la valeur de la propriété passée. Je ne veux pas utiliser la réflexion parce que je crains que de telles expressions ne puissent pas être utilisées par EF. Je ne peux pas utiliser de délégués car C# n'a pas de délégués pour les propriétés. Que puis-je faire? Peut-être que je devrais utiliser une approche différente pour écrire ces contrôles?Générer l'expression <> pour le filtrage par une propriété arbitraire
Voici ma première approche utilisant la réflexion:
public string FilteringField { get; set; }
public Expression<Func<T, bool>> GetFilterExpression()
{
if (cmbValue.SelectedIndex == 1)
return (o => (bool)typeof(T).GetProperty(FilteringField).GetValue(o, null));
if (cmbValue.SelectedIndex == 2)
return (o => !(bool)typeof(T).GetProperty(FilteringField).GetValue(o, null));
return null;
}
Peut vous s'il vous plaît clarifier votre question? Pouvez-vous donner un exemple? –