none
Problème d'inférence de type dans une vue Razor (différence de comportement entre environnement de dev et environnement de recette) RRS feed

  • Question

  • Je suis actuellement confronté à un problème dans un nouveau développement ASP.Net.

    Dans une bibliothèque de vues, j'ai une méthode dont la signature est:

    public GTGrid<M> AddColonneTriable<T>(string entete,
                                        Func<M, string> texte,
                                        Expression<Func<M, T>> tri,
                                        Func<M, GTStyle> style = null,
                                        Func<M, string> image = null,
                                        string nom = null,
                                        bool estFigee = false,
                                        bool estCachee = false)

    Je l'appelle dans une vue Razor par:

    @{
        GTGrid<Tournee> grid;

        grid = Html.GTGridAjax<Tournee, TourneeController>((p) => p.List(), "tournees");
        grid.AddColonneTriable(entete: "Dossier", texte: m => m.Code_Dossier, tri: m => m.Code_Dossier);
    }

    Ce code fonctionne sur l'environnement de développement (VS2012, Windows 7, IIS Express 7.5). Il déduit que AddColonneTriable est appliqué sur un type string.

    Sur l'environnement de recette (Windows Server 2003, IIS 6), .Net n'arrive pas à déduire le type:

    error CS0411: The type arguments for method  'eCentre.ViewHelpers.GTGrid<eCentre.Model.Entities.Tournee>.AddColonne<T>(string, System.Func<eCentre.Model.Entities.Tournee,string>, System.Linq.Expressions.Expression<System.Func<eCentre.Model.Entities.Tournee,T>>, System.Func<eCentre.Model.Entities.Tournee,eCentre.ViewHelpers.GTStyle>, System.Func<eCentre.Model.Entities.Tournee,string>, string, bool, bool, bool)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

    Cela fonctionne en écrivant

        grid.AddColonneTriable<string>(entete: "Dossier", texte: m => m.Code_Dossier, tri: m => m.Code_Dossier);

    Qu'est-ce qui peut bien changer entre les deux environnements?

    Comment puis-je forcer les développeurs à préciser le type de retour quand ils appellent cette méthode?

    Monday, March 17, 2014 8:17 AM

Answers