Est-il un moyen de revenir Anonyme de Type de méthode?

Je sais que je ne peut pas écrire une méthode comme:

public var MyMethod()
{
   return new{ Property1 = "test", Property2="test"};
}

Je peux faire autrement:

public object MyMethod()
{
   return new{ Property1 = "test", Property2="test"}
}

mais je ne veux pas faire la deuxième option parce que, si je le fais, je vais devoir utiliser la réflexion.


Pourquoi je veux le faire:

Aujourd'hui, j'ai une méthode à l'intérieur de ma page aspx qui renvoie une datatable comme résultat et je ne peut pas le changer, j'ai essayé de convertir cette DataTable à une méthode Anonyme avec les propriétés que je veux travailler avec. Je ne voulais pas créer une classe seulement pour le faire et que j'ai besoin pour exécuter la même requête plusieurs fois, j'ai Pensé à créer une méthode qui retourne un type anonyme serait une bonne ideia.

  • Que voulez-vous utiliser? Comment en êtes-vous venu à la conclusion que vous voulez faire quelque chose comme ça?
  • J'ai une méthode à l'intérieur de ma page aspx qui renvoie une datatable comme résultat, j'ai essayé de convertir cette datatable à une méthode anonyme avec les propriétés que je veux travailler avec. Je ne voulais pas créer une classe seulement pour le faire et que j'ai besoin pour exécuter la même requête plusieurs fois, j'ai pensé à créer une méthode qui retourne une méthode anonyme serait une bonne ideia.
  • ça va prendre beaucoup moins d'effort pour créer une classe pour contenir les données. Je viens de réaliser 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 quand j'ai besoin de passer d'une couche à l'autre.
  • il est parfois commode de revenir plus d'une valeur ou d'une collection de valeurs à partir d'une fonction. La plupart des langages de programmation permettent de tuples pour ad-hoc, à la volée des collections, mais C# 3.5 ne prend pas en charge cette fonctionnalité. La seule C# alternatives sont: la création d'une série de paramètres, l'emballage ad-hoc des objets dans une classe, ou le retour d'un objet[].
  • N'oubliez pas que, comme 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; } } (pardonnez la mise en forme)
  • double possible de Return type anonyme?

InformationsquelleAutor Cleiton | 2009-08-25