As a thought exercise I came up with this, though I doubt it is definative:
protected internal new virtual unsafe void MethodName<T>(
out int a,
ref int b,
params int[] c) where T : class, new()
(Also not sure completely sure whether extern methods can be generic...)
Sounds like a completely nonsensical question to me though and I'm not sure what they were hoping to achieve by asking it.
Ah, looking that complete list of C# keywords all of the CLR types are considered to be keywords. Therefore assume the method above takes one parameter of each type - I'll be damned if I'm writing that out though...
Okay, based on the comments (I wish I hadn't started this now...)
protected internal static extern unsafe void MethodName<T, U>(
out byte a,
ref char b,
decimal c,
double d,
float e,
long f,
sbyte g,
short h,
uint i,
dynamic j,
bool k = true == false,
T l = default(T),
object m = null,
int n = sizeof(ulong),
params ushort[] o) where T : class, new()
where U : struct;
(Disappointingly had to loose a few things to get it to compile. Can't has a this parameter, because then the class must be static and static classes can't have protected members. Neither can we have the default values based on typeof(), is or as since they aren't compile time constants)