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

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

Votre réponse

2 réponses

NHenry 14261 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 21 septembre 2018 Dernière intervention - 9 févr. 2016 à 20:20
0
Merci
Si tu utilises LINQ ou des lambdas Option Infer doit OBLIGATOIREMENT à on.
cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 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.