每个 属性 的唯一属性
Unique attribute for each property
我写了一个属性 class,我后来用它来对属性进行排序。
[AttributeUsage(AttributeTargets.Property)]
class OrderAttribute : Attribute
{
internal OrderAttribute(int order)
{
Order = order;
}
public int Order { get; private set; }
}
我希望这对于 class 个属性是唯一的,例如
有效场景
[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:属性值可以针对不同的 class 属性重复,但不能重复。我怎样才能做到这一点?
虽然属性值可以重复,但没有简单的方法支持确保它们是唯一的(它们只是 运行 时间),您需要在实际排序时进行检查,正如 Johnathan 已经提到的那样。有很多方法可以解决这个问题,但是在漫长的 运行 中值得这样做吗?我能想到的几个选项是:
- 挂接到实际的构建过程,创建一个使用反射进行检查并在需要时失败的构建任务。
- 运行 post-构建(post 构建事件)加载您的 dll 并反映这些属性类型的步骤。
- 创建一个可能的规则来检查唯一性。
可能还有其他的方法,暂时能想到的就这些了
我写了一个属性 class,我后来用它来对属性进行排序。
[AttributeUsage(AttributeTargets.Property)]
class OrderAttribute : Attribute
{
internal OrderAttribute(int order)
{
Order = order;
}
public int Order { get; private set; }
}
我希望这对于 class 个属性是唯一的,例如
有效场景
[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:属性值可以针对不同的 class 属性重复,但不能重复。我怎样才能做到这一点?
虽然属性值可以重复,但没有简单的方法支持确保它们是唯一的(它们只是 运行 时间),您需要在实际排序时进行检查,正如 Johnathan 已经提到的那样。有很多方法可以解决这个问题,但是在漫长的 运行 中值得这样做吗?我能想到的几个选项是:
- 挂接到实际的构建过程,创建一个使用反射进行检查并在需要时失败的构建任务。
- 运行 post-构建(post 构建事件)加载您的 dll 并反映这些属性类型的步骤。
- 创建一个可能的规则来检查唯一性。
可能还有其他的方法,暂时能想到的就这些了