J'écris une preuve de concept simple pour ce qui devrait être, par essence, un générateur d'analyseur.Pouvez-vous retourner une fonction basée sur un type générique?
Fondamentalement, je suis à la recherche d'une façon que je peux écrire une fonction qui retourne une fonction qui convertit d'une chaîne à un objet d'un type donné - je veux être en mesure de faire ce qui suit en substance:
De toute évidence, il s'agit d'un exemple assez artificiel - mais si je peux faire la version simple alors je devrais être en mesure de faire la version plus compliquée! FWIW, ce que j'essaie finalement de faire est de mapper une chaîne de valeurs sur une classe, mais pour la rendre aussi flexible que possible, je veux le faire en ayant une fonction qui retournera une fonction qui fait La conversion. Sur le plan fonctionnel, je pense que je veux quelque chose qui ressemble à ceci:
a -> (string -> a)
En tant que premier essai, je l'ai essayé de faire ceci:
public static Func<string, T> BuildParser<T>(T t)
{
if (t is String)
return new Func<string, T>(x => x.ToString());
if (t is double)
return new Func<string, T>(x => double.Parse(x));
}
Ce qui ne fonctionne pas du tout, mais Je me sens un peu coincé quant à l'approche que je devrais adopter - toute aide serait grandement appréciée!
Vous semblez manquer le point de génériques si vous cherchez _types_ dans votre fonction générique. – Oded
Si vous voulez des décisions d'exécution, vous ne devez pas utiliser de génériques. Si vous voulez des décisions à la compilation, vous ne devriez pas utiliser "est". –
@Oded - Je ne suis pas sûr d'être d'accord, je cherche juste un type particulier de polymorphisme de type. – MrBear