I am using compiled expressions to create instance. It is very fast in JIT but not in AOT (even slower) because of the fallback process. So I want to check whether the code is running in AOT. If yes, I will use ConstructorInfo.Invoke instead.
ATM, I only have an idea to check this by calling one of the methods are not allowed in AOT and then catch the error. Does any other better ways to check?
From what i can tell, there isn't really a native way to check if you are running in AOT. The method you described of running JIT-only methods and catching the errors would probably be the best way to go. that would probably be how the native method would do it anyway, if one existed.