Qual è l'alternativa di programmazione funzionale a un'interfaccia?
https://softwareengineering.stackexchange.com/questions/189047
-
05-11-2019 - |
Domanda
Se voglio programmare in uno stile "funzionale", con cosa sostituirei un'interfaccia?
interface IFace
{
string Name { get; set; }
int Id { get; }
}
class Foo : IFace { ... }
Forse un Tuple<>
?
Tuple<Func<string> /*get_Name*/, Action<String> /*set_Name*/, Func<int> /*get_Id*/> Foo;
L'unico motivo per cui sto usando un'interfaccia in primo luogo è perché voglio sempre disponibili determinate proprietà/metodi.
Modificare: Qualche più dettaglio su ciò che sto pensando/tentando.
Dì, ho un metodo che prende tre funzioni:
static class Blarf
{
public static void DoSomething(Func<string> getName, Action<string> setName, Func<int> getId);
}
Con un'istanza di Bar
Posso usare questo metodo:
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);
Ma è un po 'un po' come devo menzionare bar
tre volte in una singola chiamata. Inoltre, non ho davvero intenzione che i chiamanti forniscano funzioni da diverse istanze
Blarf.DoSomething(bar1.GetName, bar2.SetName, bar3.GetId); // NO!
In c#, un interface
è un modo per affrontarlo; Ma sembra un approccio molto orientato agli oggetti. Mi chiedo se esiste una soluzione più funzionale: 1) Passa insieme il gruppo di funzioni e 2) assicurarsi che le funzioni siano adeguatamente correlate tra loro.
Nessuna soluzione corretta