2011-05-23 23 views
0

好的...所以标题定义了我正在寻找的东西。任何关于定义从Attribute.GetCustomAttributes返回的数组顺序的建议

现在,我使用这个解决方案,用于控制顺序:

[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); 
} 
+0

1)我真的不知道你是如何使用这三个属性... 2)我不明白你为什么不只是一个属性。 – soandos 2011-05-23 17:56:23

+0

你的分类标准是什么?你究竟想用这个完成什么?一个更有效的解决方案可能涉及放弃反思,但不知道你的目标是不可能的。 – asawyer 2011-05-23 17:56:34

+0

@asawyer - 在我的泛型类中添加了一个使用该属性的示例。我仍然需要更改代码以正确的顺序对List进行排序。 @soandos - 1)看例子。 2)一个物业不符合我的要求。 – 2011-05-23 18:25:37

回答

0

我不能想象一个更好的方法。这很好。

相关问题