The dynamic cast language feature would allow you to dynamically cast from one type to another, no questions asked.
{
int integer = 3;
string text = integer; // no questions asked
}
If the types fail to cast, you will get an exception at runtime.
This is compatible with Native AOT and does not use Reflection.