using System;
 
public class Test
{
	public static IFooController iFooController => (IFooController)new object();
	public static FooRequest CreateRequest<T>(Func<FooResponse<T>> func)
	{
		return FooRequest.Create(func);
	}
 
	public static void Main()
	{
		var newRequest = CreateRequest(() => iFooController.GetEmployeeById("myPartner", 42, DateTime.Now.AddDays(-1)));
	}
}
 
public class FooRequest
{
	public static FooRequest Create<T>(Func<FooResponse<T>> func)
	{
		//Help please. We need to extract the name of the method and the values of the parameters
		return new FooRequest(null, null);
	}
 
	public FooRequest(string function, object[] data = null)
	{
		//SendRequestToServiceBus(function, data);
		Console.Write($"Function name: {function}");
	}
}
 
public class FooResponse<T> { }
 
public interface IFooController
{
	FooResponse<string> GetEmployeeById(string partnerName, int employeeId, DateTime? ifModifiedSince);
}
				dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyBJRm9vQ29udHJvbGxlciBpRm9vQ29udHJvbGxlciA9PiAoSUZvb0NvbnRyb2xsZXIpbmV3IG9iamVjdCgpOwoJcHVibGljIHN0YXRpYyBGb29SZXF1ZXN0IENyZWF0ZVJlcXVlc3Q8VD4oRnVuYzxGb29SZXNwb25zZTxUPj4gZnVuYykKCXsKCQlyZXR1cm4gRm9vUmVxdWVzdC5DcmVhdGUoZnVuYyk7Cgl9CgoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciBuZXdSZXF1ZXN0ID0gQ3JlYXRlUmVxdWVzdCgoKSA9PiBpRm9vQ29udHJvbGxlci5HZXRFbXBsb3llZUJ5SWQoIm15UGFydG5lciIsIDQyLCBEYXRlVGltZS5Ob3cuQWRkRGF5cygtMSkpKTsKCX0KfQoKcHVibGljIGNsYXNzIEZvb1JlcXVlc3QKewoJcHVibGljIHN0YXRpYyBGb29SZXF1ZXN0IENyZWF0ZTxUPihGdW5jPEZvb1Jlc3BvbnNlPFQ+PiBmdW5jKQoJewoJCS8vSGVscCBwbGVhc2UuIFdlIG5lZWQgdG8gZXh0cmFjdCB0aGUgbmFtZSBvZiB0aGUgbWV0aG9kIGFuZCB0aGUgdmFsdWVzIG9mIHRoZSBwYXJhbWV0ZXJzCgkJcmV0dXJuIG5ldyBGb29SZXF1ZXN0KG51bGwsIG51bGwpOwoJfQoKCXB1YmxpYyBGb29SZXF1ZXN0KHN0cmluZyBmdW5jdGlvbiwgb2JqZWN0W10gZGF0YSA9IG51bGwpCgl7CgkJLy9TZW5kUmVxdWVzdFRvU2VydmljZUJ1cyhmdW5jdGlvbiwgZGF0YSk7CgkJQ29uc29sZS5Xcml0ZSgkIkZ1bmN0aW9uIG5hbWU6IHtmdW5jdGlvbn0iKTsKCX0KfQoKcHVibGljIGNsYXNzIEZvb1Jlc3BvbnNlPFQ+IHsgfQoKcHVibGljIGludGVyZmFjZSBJRm9vQ29udHJvbGxlcgp7CglGb29SZXNwb25zZTxzdHJpbmc+IEdldEVtcGxveWVlQnlJZChzdHJpbmcgcGFydG5lck5hbWUsIGludCBlbXBsb3llZUlkLCBEYXRlVGltZT8gaWZNb2RpZmllZFNpbmNlKTsKfQ==