Existe-t-il un moyen de rendre une fonction renvoyer le type d'objet que je passe? Je voudrais appeler la méthode ci-dessous pour retourner le type que je passe. Est-ce possible? Devrais-je même essayer de faire ça? Y at-il un meilleur moyen ... à court d'avoir deux méthodes différentes?Renvoyer l'objet tapé de la méthode
Actuellement, j'ai essayé les deux premiers appels et je récupère (avec le premier appel) ce qui ressemble à un dictionnaire avec un system.object [] dans la partie valeur du dictionnaire. Capture d'écran ci-dessous pourrait le montrer mieux que mon explication. Je demande cela car je pourrais avoir plus de types que j'ai besoin de désérialiser et je ne veux pas avoir une méthode différente pour chacun.
var firstTry = this.Deserialize(path, typeof(ObservableCollection<ListItemPair>();
var secondTry = this.Deserialize(path, typeof(ListItemPair));
var thirdTry = this.Deserialize(path, typeof(SomeOtherObject));
public static object Deserialize(string jsonFile, object type)
{
var myObject = new object();
try
{
using (StreamReader r = new StreamReader(jsonFile))
{
var serializer = new JavaScriptSerializer();
string json = r.ReadToEnd();
myObject = serializer.Deserialize<object>(json);
}
}
catch (Exception ex)
{
}
return myObject ;
}
public class ListItemPair
{
public string Name
{
get;
set;
}
public object Value
{
get;
set;
}
}
objet créé:
vous pouvez appeler .GetType() sur un objet dans .NET si cela suffit – GEEF
, je reviens donc myObject.GetType()? – Wannabe
Eh bien, vous pouvez toujours retourner l'objet désérialisé, mais une fois que vous l'avez récupéré, vous pouvez appeler .GetType() sur l'objet ... Maintenant, si vous voulez connaître le type compiler le temps c'est une histoire différente, mais si vous voulez sortie le type ou quelque chose alors .GetType() devrait fonctionner – GEEF