Я пытаюсь создать свободный стиль 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
.