2010-07-16 10 views
16

Ho cercato these SO results e non ho trovato nulla relativo alla mia domanda. Dubito che questo potrebbe essere un duplicato.System.Type.Missing o System.Reflection.Missing.Value quando si lavora con Office PIA?

Attualmente sto scrivendo un wrapper PIA Microsoft.Office.Interop.Excel in .NET C# 3.5 e mi chiedevo quale fosse il modo migliore per utilizzare i metodi come aprire una determinata cartella di lavoro.

System.Type.Missing o Missing.Value?

Ho effettuato alcune ricerche di Google, e non riesco a trovare alcuna differenza, se non che uno è dal System namespace (System.Type.Missing), e l'altro (Missing.Value) proviene da lo spazio dei nomi System.Reflection.

  1. Qual è la differenza principale, se esiste, tra entrambi?
  2. In quali circostanze è meglio usare l'una rispetto all'altra?
  3. Perché è così?

Entrambi sembrano essere utilizzato quando si vuole passare il valore predefinito di un parametro per l'assembly di interoperabilità ...

Grazie per le vostre risposte! =)

risposta

17

Sono uguali. Nell'inizializzatore statico di Type, il campo Missing è impostato su System.Reflection.Missing.Value.

Per quanto riguarda il motivo per cui ci sono due modi per ottenere lo stesso valore: chi lo sa. È molto probabile che si tratti di un residuo di retrocompatibilità, poiché Type.Missing viene immesso come object, mentre Missing.Value viene immesso Missing.

+0

Dove hai scoperto che erano effettivamente uguali, e più interessante, dove hai scoperto che Type.Missing era impostato su Missing.Value? Grazie! =) –

+1

C'è questo meraviglioso strumento chiamato Reflector :-) Questo ti permette di guardare il codice (compilato) di ogni assembly .NET. Ma puoi anche provare a usare ILDASM (parte dell'SDK) e guardare **. Cctor ** di ** Tipo **. È la prima affermazione. – Ruben

+2

Rimane solo per accettare la tua risposta! =) Grazie! =) –

Problemi correlati