Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Abonnements

Comment WAQS vous propose d’exprimer vos règles métier ? 3/13

Posts précédents sur WAQS :

WAQS : Introduction

Comment utiliser WAQS?

Comment WAQS vous propose d’exprimer vos règles métier ? 1/13

Comment WAQS vous propose d’exprimer vos règles métier ? 2/13

 

Propriétés calculées et polymorphisme

Lors de l’écriture des règles métiers, il est possible d’avoir besoin de polymorphisme. Par exemple, on pourrait vouloir appliquer 10% aux clients VIP.

Comment exprimer cela ? Vous ne pouvez pas utiliser les mots clés asbtract, virtual et override sur les méthodes statiques.

Puisque le code des spécifications ne sert que de modèle à la génération d’un autre code, WAQS propose une solution basée sur des attributs pour exprimer cela :

[Virtual]
public static double GetDiscount(this Customer c)
{
    return 0;
}

[Override]
public static double GetDiscount(this VIPCustomer c)
{
    return 0.1;
}

Du fait de ces attributs, WAQS va générer le code approprié.

Dans la classe Customer :

public virtual double Discount
{
    get
    {
        try
        {
            if (Specifications != null && Specifications.HasDiscount)
                return Specifications.Discount;
            return 0;
        }
        catch (System.NullReferenceException)
        {
            return default (double);
        }
        catch (System.InvalidOperationException)
        {
            return default (double);
        }
    }
    set
    {
        throw new System.InvalidOperationException();
    }
}

Dans la classe VIPCustomer :

public override double Discount
{
    get
    {
        try
        {
            if (Specifications != null && Specifications.HasDiscount)
                return Specifications.Discount;
            return 0.1;
        }
        catch (System.NullReferenceException)
        {
            return default (double);
        }
        catch (System.InvalidOperationException)
        {
            return default (double);
        }
    }
    set
    {
        throw new System.InvalidOperationException();
    }
}

Avec ce moyen, nous avons ainsi facilement pu exprimer le polymorphisme.

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Publié mercredi 18 décembre 2013 14:38 par Matthieu MEZIL

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01