Aracılığıyla paylaş


Nasıl yapılır: Yazdırma Sistemi Nesnesi Özelliklerini Yansıma Olmadan Alma

Nesnedeki özellikleri (ve bu özelliklerin türlerini) listelemek için yansıma kullanmak uygulama performansını yavaşlatabilir. Ad alanı, System.Printing.IndexedProperties yansıma kullanmadan bu bilgileri almak için bir araç sağlar.

Örnek

Bunu yapmak için adımlar aşağıdaki gibidir.

  1. Türün bir örneğini oluşturun. Aşağıdaki örnekte, türü Microsoft .NET Framework ile birlikte gelen türdür PrintQueue , ancak neredeyse aynı kod türünden PrintSystemObjecttüretdiğiniz türler için çalışmalıdır.

  2. türünden PropertiesCollectionbir PrintPropertyDictionary oluşturun. Value Bu sözlükteki her girdinin özelliği, türünden PrintPropertytüretilen bir nesnedir.

  3. Sözlüğün üyelerini numaralandırın. Her biri için aşağıdakileri yapın.

  4. Her girdinin PrintProperty değerini yukarı-atama ve nesne oluşturmak PrintProperty için bu değeri kullanın.

  5. Nesnenin Value her birinin PrintProperty türünü alın.


// 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();


' 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()

Ayrıca bkz.