C# 每个属性的唯一属性
我已经编写了一个属性类,稍后用于对属性进行排序C# 每个属性的唯一属性,c#,system.reflection,C#,System.reflection,我已经编写了一个属性类,稍后用于对属性进行排序 [AttributeUsage(AttributeTargets.Property)] class OrderAttribute : Attribute { internal OrderAttribute(int order) { Order = order; } public int Order { get; private set; } } 我希望它对于类属性是唯一的,例如 有效情景 [Orde
[AttributeUsage(AttributeTargets.Property)]
class OrderAttribute : Attribute
{
internal OrderAttribute(int order)
{
Order = order;
}
public int Order { get; private set; }
}
我希望它对于类属性是唯一的,例如
有效情景
[Order(1)]
public string Tier3 { get; set; }
[Order(2)]
public string Tier4 { get; set; }
无效方案,因为值“1”重复
[Order(1)]
public string Tier3 { get; set; }
[Order(1)]
public string Tier4 { get; set; }
PS:属性值可以为不同的类属性重复,但不能在同一个类中重复。如何实现这一点?尽管属性值可以重复,但没有简单的方法可以确保它们是唯一的(它们仅在运行时),您需要检查实际排序的时间,正如Johnathan已经提到的那样。有很多方法可以解决这个问题,但从长远来看值得吗?我能想到的几个选择是:
可能还有其他方法,但这些是我目前能想到的方法。在编译时是不可能的;您需要在排序时进行检查。@JohnathanBarclay谢谢您的建议。这就是我正在使用的工作,但不幸的是,这会耗费大量的时间,最终会失败。我希望反思会支持这一点:)我觉得选择2对我来说是可行的。谢谢你的努力,先生:)\@Imad不客气,我之前已经完成了后期构建并使用FXCop创建了一个规则。后期构建并不太糟糕,在这种情况下,它比编写自定义规则更容易。