Фильтрация в QFileDialog

Я хотел бы отфильтровать файлы, которые показаны в QFileDialog более конкретно, чем просто расширения файлов. Примеры, которые я нашел в документации Qt, показывают только такие фильтры, как Изображения (* .png * .xpm * .jpg) ;; Текстовые файлы (* .txt) ;; Файлы XML (* .xml) и т. д. В дополнение к этому я также хотел бы указать фильтр для файлов, которые должны , а не отображаться в диалоговом окне файла, например XML-файлы (*. {[MyAttribute] публичная строка Foo {get; установлен; } [MyAttribute] public int Bar {get; установлен; } ...

Я написал настраиваемый атрибут, который использую для определенных членов класса:

public class Dummy
{
    [MyAttribute]
    public string Foo { get; set; }

    [MyAttribute]
    public int Bar { get; set; }
}

Я могу получить настраиваемые атрибуты из типа и найти свой конкретный атрибут. Я не могу понять, как это сделать, так это получить значения назначенных свойств. Когда я беру экземпляр Dummy и передаю его (как объект) моему методу, как я могу взять объект PropertyInfo, который я возвращаю из .GetProperties (), и получить значения, присвоенные .Foo и .Bar?

EDIT :

Моя проблема в том, что я не могу понять, как правильно вызвать GetValue.

void TestMethod (object o)
{
    Type t = o.GetType();

    var props = t.GetProperties();
    foreach (var prop in props)
    {
        var propattr = prop.GetCustomAttributes(false);

        object attr = (from row in propattr where row.GetType() == typeof(MyAttribute) select row).First();
        if (attr == null)
            continue;

        MyAttribute myattr = (MyAttribute)attr;

        var value = prop.GetValue(prop, null);
    }
}

Однако, когда я это делаю, вызов prop.GetValue выдает исключение TargetException - объект не соответствует целевому типу. Как структурировать этот вызов, чтобы получить это значение?

12
задан Joe 4 February 2011 в 01:23
поделиться