Déclaration de variables avec l'option Infer Off [Résolu]

Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
- - Dernière réponse : cs_JMO
Messages postés
1855
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
Afficher la suite 

1 réponse

Messages postés
14570
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
21 octobre 2019
136
0
Merci
Si tu utilises LINQ ou des lambdas Option Infer doit OBLIGATOIREMENT à on.
cs_JMO
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
23 -
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
Commenter la réponse de NHenry