Déclaration de variables avec l'option Infer Off

Résolu
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 9 févr. 2016 à 20:19
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 9 févr. 2016 à 20:25
Bonsoir le Forum,

Dans un projet, j'ai mis les options Strict On et Explicit On, ainsi que désactiver la référence Microsoft.VisualBasic.
Aucune erreur.
Pour suivre les recommandations de Zermelo, que je salue, j'ai rajouté l'option Infer Off.
Et là c'est la cata !!!

Deux exemples :
Public listofconfigcustomer As List(Of ConfigCustomer)

    Public Class ConfigCustomer
    Public Property Name() As String
    Public Property NameAlias() As List(Of ItemsConfig)
    Public Property Parameters() As List(Of String)
    Public Property Infocgn() As String
    Public Property Axone_Contract() As String
    Public Property Product() As String

    Public Shared Function LoadFileConfig(ByVal Path As String) As List(Of ConfigCustomer)
        Dim xdoc As XDocument = XDocument.Load(Path)
        Return (
            From c In xdoc.Descendants("Customer")
            Select New ConfigCustomer With {.Name = c.Attribute("name").Value, _
                                            .Product = c.Attribute("product").Value, _
                                            .Infocgn = c.Attribute("infocgn").Value, _
                                            .Axone_Contract = c.Attribute("axone").Value, _
                                            .Parameters = (From p In c.Descendants("Parameter")
                                                           Select p.Value).ToList(), _
                                            .NameAlias = (From a In c.Descendants("Alias")
                                                          Select New ItemsConfig With {.Name = a.Attribute("name").Value, _
                                                                                       .BTTS_Contract = a.Attribute("bttscontrat").Value, _
                                                                                       .BTTS_Codebien = a.Attribute("bttscodebien").Value, _
                                                                                       .BTTS_Category = a.Attribute("bttscategorie").Value
                                                                                       }).ToList()}).ToList()
    End Function
End Class


1er ex :
Dim customeralias = listofconfigcustomer.Single(Function(c) c.Name Is monitem.Tag).NameAlias.ToArray
aliascustomer = customeralias(0).Name
Erreurs:
Dim customeralias -> Toutes les déclarations de variable de Option Strict On requièrent une clause 'As'.
customeralias(0).Name -> Option Strict On rejette toute liaison tardive.

2ème ex :
For Each item In listofconfigcustomer
customer = item.Name
Erreur:
For each item -> 'item' n'est pas déclaré. Il peut être inaccessible en raison de son niveau de protection.


Comment déclarer ces variables pour pallier à ces erreurs ?
Les exemples de MSDN sont montrés avec Infer On.
Merci de vos suggestions,

jean-marc

1 réponse

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
9 févr. 2016 à 20:20
Si tu utilises LINQ ou des lambdas Option Infer doit OBLIGATOIREMENT à on.
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
9 févr. 2016 à 20:25
Bonsoir NHenry,

Merci de cette précision.
Utilisant LINQ dans ce projet, je vais donc remettre l'Option Infer On.

Bonne soirée,
jean-marc
0
Rejoignez-nous