Vérifier si l'objet instancié
J'ai un objet qui est fait de nombreux autres objets! Je suis essayant de trouver la valeur d'une des propriétés (enum) mais ne peut pas.
Maintenant, normalement, si je veux vérifier si un objet est null je peux faire
if (object == null)
mais cette résultats dans la même erreur.
J'ai essayé
if (object.Equals(null)) and the same error.
Le message d'erreur que j'obtiens est objectName jeta de l'exception: System.NullReferenceException: la référence d'Objet n'est pas définie à une instance d'un objet..
Je suis en train de déterminer si mon objet est instancié ou pas. Maintenant, je peux coller ça dans un try catch, si des erreurs, puis je sais pas, mais pour moi, cela se sent très mal (même si j'ai pas le choix).
L'autre problème que j'ai est ce projet n'est pas la mienne, et est une boîte noire pour tout le monde et donc je ne peux pas apporter des modifications à l'objet d'origine! Cela signifie, tout ce que j'ai est ce que j'ai obtenu, d'un objet qui peut ou ne peut pas être instanciée, et j'ai besoin d'une façon de raconter.
Autre que le try catch, puis-je avoir d'autres options?
MODIFIER
Donc, l'objet est
public partial class SaveBundleResponse
{
SaveBundleResponseHeader header;
}
public partial class SaveBundleResponseHeader
{
private SaveBundleResponseHeaderStatus status;
}
public enum SaveBundleResponseHeaderStatus
{
Success, Fail, OK, OtherStates
}
De sorte que le SaveBundleResponse est créé au départ, l'instance est ensuite passé à travers un "workflow" style de l'environnement et de chaque propriété devient "peuplées/mis à jour", etc comme il va plus loin dans le flux de travail. Cependant, dans quelques cas, l'enum est jamais définie.
Le problème c'est que j'ai besoin de connaître la valeur de l'enum (ou si elle est nulle).
Le code, je suis en train d'utiliser est
if (saveBundleResponse.Header.Status //what ever happens, it fails at this point as Status is not initiated.
if (myObject != null)
est la bonne façon de vérifier si un objet est instatiated. Peut-être que vous appelez une méthode de l'objet, qui utilise un champ qui n'est pas instancié et donc de l'exception?Il serait utile si vous pouviez au moins un prototype de l'objet conteneur vous rencontrez des problèmes avec, et, de préférence, les sous-objets qu'il contient. Actuellement, il existe un certain nombre de choses qui pourraient être à l'origine de ce problème.
Une énumération ne peut pas être
null
- c'est probablement header
qui est null
dans certains cas.Soit saveBundleResponse ou .L'en-tête est null
OriginalL'auteur Dave | 2013-02-01
Vous devez vous connecter pour publier un commentaire.
assurez-vous d'en-tête peut être null. C'est un type de référence. Et par défaut la valeur de l'enum objet est
(EnumType)0
.pourrait être condensé un peu, mais il obtient le point à travers.
Merci, cela a aidé. Mon objet est instancié, mais ma propriété (dont il possédait la propriété de l'enum) n'est pas instancié. Merci de prendre le temps et de les aider.
oh, désolé, j'ai été à la recherche à l'enum, pas la seconde classe...
OriginalL'auteur Sergey Berezovskiy
Vous devriez être en mesure d'utiliser quelque chose comme ceci:
Cela devrait fonctionner (si la classe n'est pas un contrôle, vous ne pouvez pas utiliser la IsDisposed vérifier).
OriginalL'auteur ThoBa