2010-07-16 18 views
16

Busqué these SO results y no pude encontrar nada relacionado con mi pregunta. Dudo que esto podría ser un duplicado.System.Type.Missing o System.Reflection.Missing.Value cuando se trabaja con Office PIA?

Actualmente estoy escribiendo un contenedor Microsoft.Office.Interop.Excel PIA en .NET C# 3.5 y me preguntaba qué es lo mejor para usar al llamar métodos como abrir un libro de trabajo determinado.

System.Type.Missing o Missing.Value?

he realizado algunas búsquedas de Google, y no puedo encontrar ninguna diferencia, excepto que uno es de la System espacio de nombres (System.Type.Missing), y el otro (Missing.Value) proviene de el espacio de nombre System.Reflection.

  1. ¿Cuál es la principal diferencia, si existe, entre ambos?
  2. ¿En qué circunstancias es mejor usar uno que el otro?
  3. ¿Por qué es esto así?

Ambos parecen ser utilizado cuando se quiere pasar valor predeterminado de un parámetro para el ensamblado de interoperabilidad ...

Gracias por sus respuestas! =)

Respuesta

17

Son lo mismo. En el inicializador estático de Type, el campo Missing se establece en System.Reflection.Missing.Value.

En cuanto a por qué hay dos formas de obtener el mismo valor: quién sabe. Es bastante probable que se trate de un remanente de compatibilidad con versiones anteriores, ya que Type.Missing se escribe como object, mientras que Missing.Value se escribe Missing.

+0

¿Dónde encontraste que en realidad eran lo mismo y, lo que es más interesante, dónde averiguaste que Type.Missing se configuró en Missing.Value? ¡Gracias! =) –

+1

Existe esta maravillosa herramienta llamada Reflector :-) Esto le permite ver el código (compilado) de cada ensamblado .NET. Pero también puedes probar usar ILDASM (parte del SDK) y mirar **. Cctor ** de ** Tipo **. Es la primera declaración. – Ruben

+2

¡Solo resta por aceptar su respuesta! =) Gracias! =) –

Cuestiones relacionadas