我試圖構造一個接受方法指示的流暢式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
中。