Question

Si je veux programmer dans un style "fonctionnel", que pourrais-je remplacer une interface?

interface IFace
{
   string Name { get; set; }
   int Id { get; }
}
class Foo : IFace { ... }

Peut-être un Tuple<>?

Tuple<Func<string> /*get_Name*/, Action<String> /*set_Name*/, Func<int> /*get_Id*/> Foo;

La seule raison pour laquelle j'utilise une interface en premier lieu est que je veux toujours que certaines propriétés / méthodes disponibles.


Éditer: Un peu plus de détails sur ce que je pense / tente.

Dites, j'ai une méthode qui prend trois fonctions:

static class Blarf
{
   public static void DoSomething(Func<string> getName, Action<string> setName, Func<int> getId);
}

Avec une instance de Bar Je peux utiliser cette méthode:

class Bar
{
   public string GetName();
   public void SetName(string value);

   public int GetId();
}
...
var bar = new Bar();
Blarf.DoSomething(bar.GetName, bar.SetName, bar.GetId);

Mais c'est un peu pénible car je dois mentionner bar Trois fois en un seul appel. De plus, je n'ai pas vraiment l'intention pour les appelants de fournir des fonctions à partir de différentes instances

Blarf.DoSomething(bar1.GetName, bar2.SetName, bar3.GetId); // NO!

En C #, un interface est une façon de gérer cela; Mais cela semble être une approche très orientée objet. Je me demande s'il y a une solution plus fonctionnelle: 1) passer le groupe de fonctions ensemble et 2) s'assurer que les fonctions sont correctement liées les unes aux autres.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top