2011-03-16 4 views
1

Je sérialise une classe ci-dessous et la méthode nécessite un type d'objet comme paramètre.typeof & GetType

string xml = SerializeObject(data, typeof(ClassData)); 

Je pense que le deuxième paramètre n'est pas nécessaire. Comment puis-je supprimer le deuxième paramètre? Comment puis-je obtenir le type comme Type?

+1

Vous devriez nommer vos classes en utilisant PascalCase afin d'éviter toute confusion. Il suffit de regarder ce qui s'est passé ici dans les réponses - beaucoup de gens si classData était une variable quand il s'agit d'une classe. Les conventions sont importantes. Sinon, vous ne serez pas populaire parmi les autres geeks. Et ce n'est pas amusant. –

+0

Voici la convention de dénomination de Microsoft: http://msdn.microsoft.com/en-us/library/ms229002.aspx –

+0

qu'est-ce que SerializeObject? une méthode personnalisée peut-être, pouvez-vous poster ce que les paramètres sont attendus, cela n'a pas de sens de demander l'objet et son type –

Répondre

6

Vous pouvez faire:

data.GetType() 

qui vous donnera le type de data

L'ensemble EXPRE ssion serait

string xml = SerializeObject(data, data.GetType()); 

GetType() est une méthode qui est déclarée sur Object et peut être utilisé sur un exemple d'un objet.

typeof() est une instruction qui peut être utilisée sur un Type sans en avoir une instance.

// Get type from instance 
Type type = data.GetType() 

// Get type from Type 
Type type = typeof(ClassData) 
+0

Dans un bref ** typeof (NomClasse) ** = ** classVariable.GetType() ** et ma méthode devient ** SerializeObject (données); ** –

+0

Je suppose que vous pourriez exprimer cela aussi brièvement, oui .. :) –

2
string xml = SerializeObject(data, data.GetType()); 

si vous avez

Person p = ... ; 

pour obtenir le type, vous pouvez faire

Type t = p.GetType() 

si vous avez besoin du type d'exécution de l'objet. p pourrait être un objet d'une classe qui étend Person.

ou

Type t = typeof(Person); 
1

Utilisez les éléments suivants:

classData.GetType(); 
1

data.GetType() doit retourner l'objet de type de la classe des 'données'.

1

Pour obtenir le type de data comme Type, vous pouvez utiliser cette syntaxe:

Type dataType = data.GetType(); 

J'espère que c'est-ce que vous demandez, que la question est pas tout à fait clair pour moi.