如果我想以“功能性”风格进行编程,我将用什么替换接口?
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;
首先使用接口的唯一原因是,我总是希望某些属性/方法可用。
编辑:有关我在想什么/尝试的更多详细信息。
说,我有一个方法,它具有三个功能:
static class Blarf
{
public static void DoSomething(Func<string> getName, Action<string> setName, Func<int> getId);
}
对于Bar
I 的实例,可以使用此方法:
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
在一个电话中提及三遍。另外,我并不打算让调用者提供不同实例的功能
Blarf.DoSomething(bar1.GetName, bar2.SetName, bar3.GetId); // NO!
在C#中,一种interface
是处理此问题的方法。但这似乎是一种非常面向对象的方法。我想知道是否还有一个更实用的功能解决方案:1)将功能组一起传递,以及2)确保功能彼此正确相关。