Dubbi, ragionamenti e quiz sull’Interop di Outlook 2007
1 ContactItem item = (ContactItem)folder.Items.Add(OlItemType.olContactItem); 2 MemberInfo[] mi1 = typeof(ContactItem).GetMembers(); 3 MemberInfo[] mi2 = item.GetType().GetMembers(); 4 5 Console.WriteLine(mi1.Length); 6 Console.WriteLine(mi2.Length); 7 8 // m1.Length = 0 9 // m2.Length = 7
L’istanza item è di tipo ContactItem. Se chiamo GetMembers() sul GetType() di questa istanza ottengo un’array di mi1.Length.
Se chiamo GetMembers() sul typeof(ContactItem) ottengo un’array di mi2.Length.
Il primo array contiene 0 elementi. Il secondo array contiene 7 elementi. Difatti, indagando più a fondo:
// item.GetType() --> {Name = "__ComObject" FullName = "System.__ComObject"} // typeof(ContactItem) --> {Name = "ContactItem" FullName = "Microsoft.Office.Interop.Outlook.ContactItem"}
Qualcuno sa perchè? Vi è già capitato? Avete percorso la mia stessa strada con risultati diversi?