OrderAttribute
[Order(long)] attribute can be placed on class to indicate evaluation order. Handlers are evaluated in order of assigned order values. Smaller value is evaluated earlier.
[Order(1_000_000_000)]
public class Handler : IHandler<TypeRequest, Type>
{
public void Handle(IQuery<TypeRequest, Type> query)
{
// Already handled
if (query.Handled()) return;
// Assign result
query.Response.SetValue(typeof(string));
}
}
[Order(long)] attribute can be placed on Handle() method to indicate evaluation order.
public class Handler02 : IHandler<TypeRequest, Type>, IHandler<ScopedServiceRequest<IList>, IList>
{
[Order(1000)]
public void Handle(IQuery<TypeRequest, Type> query)
{
}
[Order(2000)]
public void Handle(IQuery<ScopedServiceRequest<IList>, IList> query)
{
}
}
Full Example
Full example
using System;
using System.Collections;
using Avalanche.Service;
public class handler_orderattribute
{
// <01>
[Order(1_000_000_000)]
public class Handler : IHandler<TypeRequest, Type>
{
public void Handle(IQuery<TypeRequest, Type> query)
{
// Already handled
if (query.Handled()) return;
// Assign result
query.Response.SetValue(typeof(string));
}
}
// </01>
// <02>
public class Handler02 : IHandler<TypeRequest, Type>, IHandler<ScopedServiceRequest<IList>, IList>
{
[Order(1000)]
public void Handle(IQuery<TypeRequest, Type> query)
{
}
[Order(2000)]
public void Handle(IQuery<ScopedServiceRequest<IList>, IList> query)
{
}
}
// </02>
}