我有一类具有枚举EnumParentAttribute和智能感知
namespace Entities
{
public partial class OrderStatusType : Entity
{
public enum EOrderStatusType
{
P2 = 1,
Mounting = 2,
}
}
}
然后我有一个接口
namespace Interfaces
{
public interface IAttribute<T>
{
T Value { get; }
}
}
和另一类
namespace Entities
{
public partial class OrderStatus : Entity
{
[DataContract]
public enum EOrderStatus
{
[EnumMember(Value = "Film Ordered"), EnumParent(OrderStatusType.EOrderStatusType.P2)]
FilmOrdered = 1,
[EnumMember(Value = "Not Started"), EnumParent(OrderStatusType.EOrderStatusType.P2)]
NotStarted = 2,
[EnumMember(Value = "Cliche Ordered"), EnumParent(OrderStatusType.EOrderStatusType.P2)]
ClicheOrdered = 3,
[EnumMember(Value = "Cliche In Stock"), EnumParent(OrderStatusType.EOrderStatusType.P2)]
ClicheInStock = 4,
[EnumMember(Value = "Cliche Prepared"), EnumParent(OrderStatusType.EOrderStatusType.P2)]
ClichePrepared = 5,
[EnumMember(Value = "Ready to start"), EnumParent(OrderStatusType.EOrderStatusType.P2)]
Readytostart = 6,
[EnumMember(Value = "Started"), EnumParent(OrderStatusType.EOrderStatusType.P2)]
Started = 7,
[EnumMember(Value = "Interrupted"), EnumParent(OrderStatusType.EOrderStatusType.P2)]
Interrupted = 8,
[EnumMember(Value = "Completed"), EnumParent(OrderStatusType.EOrderStatusType.P2)]
Completed = 9,
[EnumMember(Value = "ClichV status"), EnumParent(OrderStatusType.EOrderStatusType.P2)]
ClichVstatus = 10,
[EnumMember(Value = "Cliche Mounting"), EnumParent(OrderStatusType.EOrderStatusType.P2)]
ClicheMounting = 11,
[EnumMember(Value = "In Stock"), EnumParent(OrderStatusType.EOrderStatusType.P2)]
InStock = 12,
[EnumMember(Value = "Ordine con cilindri montati"), EnumParent(OrderStatusType.EOrderStatusType.Mounting)]
OrdineConCilindriMontati = 13,
}
[AttributeUsage(AttributeTargets.Field)]
public sealed class EnumParentAttribute : Attribute, Library.Interfaces.IAttribute<OrderStatusType.EOrderStatusType>
{
public EnumParentAttribute(OrderStatusType.EOrderStatusType EOrderStatusType) { this.mValue = EOrderStatusType; }
private OrderStatusType.EOrderStatusType mValue;
public OrderStatusType.EOrderStatusType Value { get { return mValue; } }
}
}
}
在类OrderStatus创建一个密封的子类从属性继承的EnumParentAttribute,实现了接口和我可以传递参数的地方OrderStatusType.EOrderStatusType类型,所以现在我可以使用自定义属性EnumParent来装饰枚举EOrderStatus的项目,该自定义属性接受OrderStatusType.EOrderStatusType类型的参数。
原因是我想在两个枚举之间创建一种父子关系。 但我想采取另一个步骤或两个...
问:
1)如何添加,迫使我去装点一新EOrderStatusType项目与自定义属性“constarint” EnumParent?有一种方法可以让编译器在编译期间通知异常吗? 2)如何扩展EOrderStatusType枚举,以便我可以编写如下代码: OrderStatus.EOrderStatusType(P2)l_MyEnum = OrderStatus.EOrderStatus.FilmOrdered; Intellisense只显示“正确”父项的项目吗?
对不起,我的英语,我希望它是完全可以理解的......
提前感谢!