Procedura: ottenere le proprietà di un oggetto di sistema di stampa senza ricorrere alla riflessione
Aggiornamento: novembre 2007
L'utilizzo della Reflection per descrivere in dettaglio le proprietà (e i relativi tipi) su un oggetto può influire negativamente sulle prestazioni dell'applicazione. Lo spazio dei nomi System.Printing.IndexedProperties consente di ottenere queste informazioni utilizzando la Reflection.
Esempio
I passaggi di questa procedura sono indicati di seguito.
Creare un'istanza del tipo. Nell'esempio riportato di seguito, il tipo è il tipo PrintQueue fornito con Microsoft .NET Framework, ma codice quasi identico dovrebbe funzionare per tipi che è possibile derivare da PrintSystemObject.
Creare un oggetto PrintPropertyDictionary dalla proprietà PropertiesCollection del tipo. La proprietà Value di ciascun elemento di questo dizionario è un oggetto di uno dei tipi derivati da PrintProperty.
Enumerare i membri del dizionario. Per ognuno di essi, eseguire le operazioni seguenti.
Eseguire l'upcast del valore di ogni voce in PrintProperty e utilizzarlo per creare un oggetto PrintProperty.
Ottenere il tipo della proprietà Value di ogni oggetto PrintProperty.
// Enumerate the properties, and their types, of a queue without using Reflection
LocalPrintServer localPrintServer = new LocalPrintServer();
PrintQueue defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue();
PrintPropertyDictionary printQueueProperties = defaultPrintQueue.PropertiesCollection;
Console.WriteLine("These are the properties, and their types, of {0}, a {1}", defaultPrintQueue.Name, defaultPrintQueue.GetType().ToString() +"\n");
foreach (DictionaryEntry entry in printQueueProperties)
{
PrintProperty property = (PrintProperty)entry.Value;
if (property.Value != null)
{
Console.WriteLine(property.Name + "\t(Type: {0})", property.Value.GetType().ToString());
}
}
Console.WriteLine("\n\nPress Return to continue...");
Console.ReadLine();
Vedere anche
Concetti
Documenti di Windows Presentation Foundation
Cenni preliminari sulla stampa
Riferimenti
System.Printing.IndexedProperties