「機能的な」スタイルでプログラミングしたい場合、インターフェイスを何に置き換えますか?
interface IFace
{
string Name { get; set; }
int Id { get; }
}
class Foo : IFace { ... }
たぶんTuple<>
?
Tuple<Func<string> /*get_Name*/, Action<String> /*set_Name*/, Func<int> /*get_Id*/> Foo;
そもそもインターフェイスを使用している唯一の理由は、特定のプロパティ/メソッドを常に利用できるようにしたいからです。
編集:私が考えている/試みていることについてのいくつかの詳細。
たとえば、次の3つの関数を取るメソッドがあります。
static class Blarf
{
public static void DoSomething(Func<string> getName, Action<string> setName, Func<int> getId);
}
Bar
私のインスタンスでこのメソッドを使用できます:
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);
しかしbar
、1回の呼び出しで3回言及しなければならないので、それは少し苦痛です。さらに、呼び出し元が異なるインスタンスから関数を提供することを本当に意図していない
Blarf.DoSomething(bar1.GetName, bar2.SetName, bar3.GetId); // NO!
C#では、interface
これに対処する1つの方法です。しかし、それは非常にオブジェクト指向のアプローチのようです。もっと機能的な解決策があるかどうか疑問に思っています:1)関数のグループを一緒に渡し、2)関数が互いに適切に関連していることを確認します。