Vous avez rendu les propriétés privées. Si vous voulez qu'ils soient essayer public:
public List<GeoInfo> GeoInfos { get; set; }
La valeur implémentée automatiquement stocké localement dans l'objet sera privé; mais les propriétés elles-mêmes sont publiques. Parce que ce que vous déclarez il y a les accesseurs de propriété.
Si vous voulez écrire tout explicitement, vous pouvez le faire l'ancien avant 3.0 façon
private List<GeoInfo> geoInfos = new List<GeoInfo>;
public List<GeoInfo> GeoInfos {
get { return geoInfos; }
set { geoInfos = value; }
}
Ce encore repose sur geoInfos étant initialisés quelque part (comme le constructeur) - ou nullPointerException
retournerez.
Vous pourriez faire-évaluation paresseuse à ce droit dans le getter:
private List<GeoInfo> geoInfos = new List<GeoInfo>;
public List<GeoInfo> GeoInfos {
get { if (geoInfos == null) {
geoInfos = new List<GeoInfo>;
}
return geoInfos;
}
set { geoInfos = value; }
}
Cela garantit que vous ne devez pas spécifier un appel dans le constructeur, et vous n'avez pas à vous soucier de la séquence d'exécution définissant explicitement l'élément avant de l'obtenir. Mais si vous utilisez les propriétés auto-générées, vous devrez définir explicitement la référence à un moment donné. Comme suggéré ailleurs, le meilleur pari est le constructeur.
Est-ce 'UnhandledException' ou' ArgumentNullException' - s'il vous plaît clarifier. En outre, il n'y a rien de fondamentalement mauvais avec ce code * en soi * - Je pense que vous allez devoir ajouter plus de contexte; idéalement un exemple reproductible. –
Cette ligne par elle-même semble bien. Pouvez-vous poster plus de code? C'est probablement quelque chose d'autre qui en est la cause. – eldarerathis
Veuillez poster un programme court mais complet démontrant le problème. C'est probablement quelque chose de simple, mais nous ne pouvons pas le dire à partir de cette ligne. –