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

Will Marcouiller picture Will Marcouiller · Jul 16, 2010 · Viewed 7.7k times · Source

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! =)

Answer

Ruben picture Ruben · Jul 16, 2010

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.