我试图构造一个接受方法指示的流畅式API。我想实现可以用这个(无效)代码样本来描述下:构建一个接受方法组的流畅API方法
public class SampleBuilder
{
public void Method<T>(Expression<Func<T, Delegate>> func) { }
// for the sake of this example this method doesn't have a return value
}
public class Sample
{
public void SomeMethod(int some, int arbitrary, int agruments) { }
}
public class SampleConfig
{
public void Config()
{
new SampleBuilder().Method<Sample>(x => x.SomeMethod);
}
}
的问题是编译器显然抱怨x.SomeMethod
表示方法组。我的API既不能推定实际的实例,也不能推定实际的方法签名。这是在运行时决定的。
你会如何解决这种情况,以提供一个易于使用的API,让用户指定一个方法组?
背景:导致使用量将是这样的:
config.Transition().From(v1def, v1 => v1.ExitMethod).To(v2def, v2 => v2.EntryMethod);
凡To()
和From()
接受意见及其进入/退出方法定义。在上面的具体示例中,v1def
表示视图定义类,而v1
表示实际视图类。在一天结束时,构建新的转换并将其添加到config
中。