Je sais que je ne peux pas écrire une méthode comme:
public var MyMethod()
{
return new{ Property1 = "test", Property2="test"};
}
Je peux le faire autrement:
public object MyMethod()
{
return new{ Property1 = "test", Property2="test"}
}
mais je ne veux pas choisir la deuxième option car, si je le fais, je devrai utiliser la réflexion.
Pourquoi je veux faire cela:
Aujourd'hui, j'ai une méthode à l'intérieur de ma page aspx qui renvoie un DataTable en tant que résultat et je ne peux pas la modifier, j'ai tenté de convertir ce DataTable en une méthode anonyme avec les propriétés avec lesquelles je veux travailler. Je ne voulais pas créer une classe juste pour ça et comme je devrai effectuer la même requête plusieurs fois, j'ai pensé qu'il serait une bonne idée de créer une méthode qui renvoie un type anonyme.
0 votes
Quel usage en auriez-vous ? Comment en êtes-vous arrivé à la conclusion que vous voudriez faire quelque chose comme ça ?
0 votes
@Guffa, j'ai une méthode à l'intérieur de ma page aspx qui renvoie un datatable en tant que résultat. J'essayais de convertir ce datatable en une méthode anonyme avec les propriétés avec lesquelles je veux travailler. Je ne voulais pas créer une classe juste pour faire cela et comme je devrai exécuter la même requête plusieurs fois, j'ai pensé qu'il serait une bonne idée de créer une méthode qui renvoie une méthode anonyme.
1 votes
@Cleiton - il faudra beaucoup moins d'efforts pour créer une classe pour contenir les données. J'ai réalisé que juste parce que je peux utiliser des types anonymes pour manipuler facilement les données, cela ne signifie pas que je devrais arrêter de créer des classes pour définir ces types lorsque j'ai besoin de les passer d'une couche à une autre.
0 votes
@Guffa : parfois il est pratique de retourner plus d'une valeur ou une collection de valeurs liées à partir d'une fonction. La plupart des langages fournissent des tuples pour les collections ad-hoc, mais C# 3.5 ne prend pas en charge cette fonctionnalité pour le moment. Les seules alternatives en C# sont : créer une série de paramètres de sortie, regrouper des objets ad-hoc dans une classe ou retourner un object[].
0 votes
N'oubliez pas que, à partir de C# 3.0, vous pouvez déclarer un type avec très peu de frappe. Exemple:
public class NonAnonymousType { public int Foo { get; set; } public string Bar { get; set; } }
(veuillez pardonner la mise en forme)0 votes
Possible duplicate de Return anonymous type?
0 votes
Sorte de réponse, étant donné certaines contraintes, peut être trouvée ici: stackoverflow.com/a/58560612/286406