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

cs_JMO 1816 Messages postés jeudi 23 mai 2002Date d'inscription 7 décembre 2017 Dernière intervention - 9 févr. 2016 à 20:19 - Dernière réponse : cs_JMO 1816 Messages postés jeudi 23 mai 2002Date d'inscription 7 décembre 2017 Dernière intervention
- 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 
1816Messages postés jeudi 23 mai 2002Date d'inscription 7 décembre 2017 Dernière intervention

2 réponses

Répondre au sujet
NHenry 14000 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 11 décembre 2017 Dernière intervention - 9 févr. 2016 à 20:20
0
Utile
1
Si tu utilises LINQ ou des lambdas Option Infer doit OBLIGATOIREMENT à on.
cs_JMO 1816 Messages postés jeudi 23 mai 2002Date d'inscription 7 décembre 2017 Dernière intervention - 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
Commenter la réponse de NHenry

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.