public static void EmitThrowException <T>(this ILGenerator il, string s = null) where T : Exception
{
var invalidcast = typeof(T);
il.Emit(OpCodes.Ldstr, s ?? "message");
il.Emit(OpCodes.Newobj, invalidcast.GetConstructor(new[] { typeof(string) }));
il.ThrowException(invalidcast);
}