我有 3 个属性用于 Unity v2.1 中的 Inteception 管道。一切都正常启动,只是顺序错误。
在所有 3 个属性中,我确保我从属性传递了相应的处理程序。
因此,如果我在下面的 TestClass.TestProperty 上调用 setter,我希望调用处理程序应按以下顺序调用:Validation、Transaction、Notify。我看到的是Notify, Transaction, Validation。
我在这里有 2 个问题,我无法找到使用谷歌搜索的答案。
- 在我设置 TestClass.TestProperty 的示例中,是否假设先调用属性属性然后调用类属性?还是 Unity 应该尊重我的命令?
如果首先调用 2 个属性处理程序,我应该看不到Notify, Transaction。如果我覆盖 Transaction 和 Notify Order 的默认值分别为 1 和 2,我会得到Transaction, Notify的预期。我的订单从 1 开始是否重要。
[AttributeUsage(AttributeTargets.Class) public class ValidationAttribute : HandlerAttribute { public ValidationAttribute(int order = 1) { Order = order } public override ICallHandler CreateHandler(IUnityContainer container) { var ValidationHandler = container.Resolve<ValidationHandler>(); ValidationHandler.Order = Order; } } public class TransactionAttribute : HandlerAttribute { public TransactionAttribute (int order = 2) { Order = order } // Same CreateHandler as above resolving correct handler } public class NotifyAttribute : HandlerAttribute { public NotifyAttribute (int order = 3) { Order = order } // Same CreateHandler as above resolving correct handler } // Didn't include handler code to keep short(ish). All handlers have logging to show they are executing ... [Validation] public class TestClass { public int TestProperty { get; [Transaction] [Notify] set; } }