Je souhaite utiliser l'expression Linq pour certaines fonctions dynamiques. J'ai besoin d'expressions And, Or et Not .. Je ne pouvais pas obtenir beaucoup ..C# Expression utilisant l'expression Et Ou et Non ensemble basée sur AST
Nous voulons vérifier si certaines fonctionnalités ont été activées ou non dans notre système et sur la base de cela, nous déciderons de montrer ou non l'élément de menu ou pas. Nous avons formé des règles au format XML, je sais convertir la règle en AST mais je ne sais pas comment mapper l'expression Linq.
Les règles sont comme: Feature1Enabled Et Feature2Eenabled ou (Feature3Disabled et non Feature5Enabled)
ici "Feature1Enabled", "Feature2Eenabled" etc sont le nom de la fonction. Nous allons passer cette chaîne à la fonction IsFeatureEnabled pour vérifier si une fonctionnalité a été activée ou non.
public delegate bool IsEnabledDelegate(string name, string value);
public static bool IsFeatureEnabled(string name, string value)
{
if (name == "MV")
return true;
if (name == "GAS" && value == "G")
return true;
//More conditions goes here
return false;
}
static void Main(string[] args)
{
Expression<Func<string, string, bool>> featureEnabledExpTree =
(name, value) => IsFeatureEnabled(name, value);
//I want the equal of the following statement in C# Linq Expression
bool result = IsFeatureEnabled("MV", "") && IsFeatureEnabled("GAS", "G") || !IsFEatureEnabled("GAS", "F")
}
Je veux l'équivalent au résultat bool = IsFeatureEnabled ("MV", "") & & IsFeatureEnabled ("GAZ", "G") || ! IsFEatureEnabled ("GAZ", "F")
dans l'expression Linq Format .. Cependant, je peux les convertir en dynamique en fonction de mes notations AST ..
Merci beaucoup .. Si vous avez besoin de plus d'informations , dites-moi dans les commentaires ..
(exemple révisé pour montrer featureEnabledExpTree de construction lors de l'exécution à partir des données) –