Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

System.Type.Missing or System.Reflection.Missing.Value when working with Office PIA?

I searched these SO results and couldn't find anything related to my question. I doubt this could be a duplicate.

I'm currently writing a Microsoft.Office.Interop.Excel PIA wrapper in .NET C# 3.5 and was wondering about what is best to use while calling methods like opening a given workbook.

System.Type.Missing or Missing.Value?

I have performed a few Google searches, and can't find any difference, except that one is from the System namespace (System.Type.Missing), and the other (Missing.Value) comes from the System.Reflection namespace.

  1. What is the major difference, if any, between both?
  2. Under which circumstances one is best to use than the other?
  3. Why is this so?

Both seem to be used when you want to pass a parameter's default value to the interop assembly...

Thanks for your answers! =)

like image 589
Will Marcouiller Avatar asked Jul 16 '10 08:07

Will Marcouiller


1 Answers

They are the same. In the static initializer of Type, the field Missing is set to System.Reflection.Missing.Value.

As for why there are two ways of getting at the same value: who knows. It's quite likely that this is a backward compatibility remnant, as Type.Missing is typed as object, whereas Missing.Value is typed Missing.

like image 171
Ruben Avatar answered Nov 13 '22 12:11

Ruben