Compartilhar via


Como: Get Print System Object Properties Without Reflection

Usando Reflexão para itemizar as propriedades (e os tipos dessas propriedades) em um objeto pode diminuir o desempenho do aplicativo. O espaço de nomes System.Printing.IndexedProperties fornece um meio para obter essas informações com o uso de Reflexão.

Exemplo

Os passos para realizar isto são os seguintes.

  1. Criar uma instância do tipo. No exemplo abaixo, o tipo é o tipo PrintQueue que acompanha o Microsoft .NET Framework, mas código quase idêntico deve funcionar para tipos que derivarem de PrintSystemObject.

  2. Criar um PrintPropertyDictionary a partir da PropertiesCollection do tipo. A propriedade Value de cada entrada neste dicionário é um objeto do tipo derivado de PrintProperty.

  3. Enumerar os membros do dicionário. Para cada um deles, faça o seguinte.

  4. Faça cast do valor de cada entrada para PrintProperty e use-o para criar um objeto PrintProperty.

  5. Obtenha o tipo de Value de cada um dos objetos 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();

Consulte também

Conceitos

Documentos em Windows Presentation Foundation

Visão Geral de Impressão

Referência

PrintProperty

PrintSystemObject

System.Printing.IndexedProperties

PrintPropertyDictionary

LocalPrintServer

PrintQueue

DictionaryEntry

Outros recursos

Exemplos de impressão