An object-oriented and type-safe programming language that has its roots in the C family of languages and includes support for component-oriented programming.
you can constrain to value types. depending on the parameter mix, you might want to try method overloading:
private void _CallIntType<T>(T i) => Console.WriteLine(i);
public void CallIntType(long i) => _CallIntType(i);
public void CallIntType(ulong i) => _CallIntType(i);
this makes use the compiler up casting.