You cannot do this with delegates, because the delegate settings aaado not match.
Instead, you can do something like this (create method adapters aaaRefIntand aaaInt):
public void aaaRefInt(ref int first)
{
object[] Args = new object[]{first};
aaa(Args);
first = (int)Args[0];
}
public void aaaInt(int first)
{
aaa(new object[]{first});
}
var n = new EmptyBody(aaaRefInt);
n(ref b);
var x = new AnotherEmptyBody(aaaInt);
x(b);
source
share