Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Использование отражения для перечисления свойств (и типов этих свойств) объекта может уменьшить производительность приложения. Пространство имен System.Printing.IndexedProperties предоставляет средства для получения этой информации без использования механизма рефлексии.
Пример
Ниже приведены шаги по выполнению этого действия.
Создайте экземпляр типа. В приведенном ниже примере тип является типом PrintQueue, который поставляется с Microsoft .NET Framework, но практически идентичный код должен работать для типов, производных от PrintSystemObject.
Создайте PrintPropertyDictionary из PropertiesCollectionтипа. Свойство Value каждой записи в этом словаре является объектом одного из типов, производных от PrintProperty.
Перечисление элементов словаря. Для каждого из них выполните следующие действия.
Приведение значения каждой записи к PrintProperty и его использование для создания объекта PrintProperty.
Получите тип Value каждого объекта 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();
' 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()
См. также
.NET Desktop feedback