Поскольку вы говорите: «Я не знаю тип возвращаемого значения или параметры заранее», я думаю, Динамический прокси - это то, что вы
необходимо.
К сожалению, я знаю только о динамическом прокси в Java. Но я уверен, что есть что-то подобное для C #.
Попробуйте поискать в Google "Dynamic Proxy C #".
Например, здесь, кажется, есть реализация для C #: http://www.castleproject.org/dynamicproxy/
Итак, что такое динамический прокси?
Из JavaDoc http://docs.oracle.com/javase/1.3/docs/guide/reflection/proxy.html#api:
Динамический прокси-класс - это класс, который реализует список интерфейсов, указанных во время выполнения , так что вызов метода через один из интерфейсов в экземпляре класса будет закодирован и отправлен другому объекту через единый интерфейс. Таким образом, динамический прокси-класс может использоваться для создания прокси-объекта с безопасным типом для списка интерфейсов без необходимости предварительной генерации прокси-класса, например, с помощью инструментов времени компиляции. Вызовы методов для экземпляра динамического прокси-класса отправляются в единственный метод в обработчике вызовов экземпляра , и они кодируются с помощью объекта java.lang.reflect.Method, идентифицирующего метод, который был вызван, и объекта. массив типа Object, содержащий аргументы.