Любые предложения по определению порядка массива, возвращаемого из Attribute.GetCustomAttributes - PullRequest
0 голосов
/ 23 мая 2011

Хорошо ... так что название определяет именно то, что я ищу.

Сейчас я использую это решение для контроля заказа:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
public class DefaultSortCriterionAttribute : Attribute
{
    private int _priority = 0;

    public int Priority
    {
        get
        {
            return _priority;
        }
    }

    private string _parameterName;

    public string ParameterName
    {
        get
        {
            return _parameterName;
        }
    }

    private SortDirection _direction;

    public SortDirection Direction
    {
        get
        {
            return _direction;
        }
    }

    public DefaultSortCriterionAttribute(string parameterName, SortDirection direction)
    {
        _parameterName = parameterName;
        _direction = direction;
    }

    public DefaultSortCriterionAttribute(int priority, string parameterName, SortDirection direction)
    {
        _priority = priority;
        _parameterName = parameterName;
        _direction = direction;
    }

}

Любое предложение, как сделать его более эффективным?

Пример использования в моем родовом классе:

Type type = typeof(T);
if (Attribute.IsDefined(type, typeof(DefaultSortCriterionAttribute)))
{
    DefaultSortCriterionAttribute[] attribs = (DefaultSortCriterionAttribute[])Attribute.GetCustomAttributes(type, typeof(DefaultSortCriterionAttribute));

    List<SortCriterion> list = new List<SortCriterion>();

    foreach (DefaultSortCriterionAttribute attrib in attribs)
    {
        SortCriterion sc = new SortCriterion(attrib.ParameterName, attrib.Direction);
        list.Add(sc);
    }

    return this.CompareTo(other, list);
}

1 Ответ

0 голосов
/ 23 мая 2011

Я не могу представить лучший подход.Это хорошо.

...