ParameterInfo.DefaultValue may return Type.Missing
ParameterInfo.DefaultValue may return Type.Missing if parameter is optional, but no default value in metadata (probably COM interop case). Same for ParameterInfo.RawDefaultValue
See implementation
https://github.com/dotnet/runtime/blob/v7.0.13/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeParameterInfo.cs#L287-L298
Basically, having a default value sets the Optional attribute for the parameter. Though one can set it using [Optional] attribute even without default value. Also, it can be set with reflection emit without a default value and result Type.Missing
public void Method([Optional]string parameter) { }
See also https://github.com/dotnet/runtime/issues/100322