Gewusst wie: Abrufen von Drucksystemobjekt-Eigenschaften ohne Reflektion
Die Aufgliederung der Eigenschaften (und Typen dieser Eigenschaften) eines Objekts mithilfe von Reflektion kann die Anwendungsleistung beeinträchtigen. Der System.Printing.IndexedProperties-Namespace bietet eine Möglichkeit, diese Informationen mithilfe der Reflektion abzurufen.
Beispiel
Dazu müssen die folgenden Schritte ausgeführt werden.
Erstellen Sie eine Instanz des Typs. Im folgenden Beispiel wird der PrintQueue-Typ aus Microsoft .NET Framework verwendet. Für Typen, die Sie von PrintSystemObject ableiten, können Sie den Code leicht anpassen.
Erstellen Sie ein PrintPropertyDictionary aus der PropertiesCollection für diesen Typ. Die Value-Eigenschaft für jeden Eintrag in diesem Wörterbuch ist ein Objekt, das zu einem der von PrintProperty abgeleiteten Typen gehört.
Listen Sie die Member des Wörterbuchs auf. Gehen Sie für jeden Member wie folgt vor.
Wandeln Sie den Wert jedes Eintrags in PrintProperty um, und erstellen Sie damit ein PrintProperty-Objekt.
Rufen Sie den Value-Typ für jedes PrintProperty-Objekt ab.
' Enumerate the properties, and their types, of a queue without using Reflection
Dim localPrintServer As New LocalPrintServer()
Dim defaultPrintQueue As PrintQueue = LocalPrintServer.GetDefaultPrintQueue()
Dim printQueueProperties As PrintPropertyDictionary = defaultPrintQueue.PropertiesCollection
Console.WriteLine("These are the properties, and their types, of {0}, a {1}", defaultPrintQueue.Name, defaultPrintQueue.GetType().ToString() + vbLf)
For Each entry As DictionaryEntry In printQueueProperties
Dim [property] As PrintProperty = CType(entry.Value, PrintProperty)
If [property].Value IsNot Nothing Then
Console.WriteLine([property].Name & vbTab & "(Type: {0})", [property].Value.GetType().ToString())
End If
Next entry
Console.WriteLine(vbLf & vbLf & "Press Return to continue...")
Console.ReadLine()
// 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();
Siehe auch
Referenz
System.Printing.IndexedProperties