2010-08-25 3 views
2

Tenir compte des attributs IOperationBehavior suivants:Définir une priorité lors de l'utilisation de plusieurs attributs IOperationBehavior

public class OperationCredentialsAttribute : Attribute, IOperationBehavior 
{ 
} 

public class OperationProcessesAttribute : Attribute, IOperationBehavior 
{ 
} 

... et la définition de l'opération suivante:

public interface IService 
{ 
    [OperationCredentials(true)] 
    [OperationProcesses(new[] { "CreateCustomerProcess" })] 
    CreateCustomerResponse CreateCustomer(CreateCustomerMessage CreateCustomerMessage); 
} 

je dois vous assurer que l'attribut est OperationCredentials traité avant l'attribut OperationProcesses, car tous deux utilisent la méthode ApplyDispatchBehavior pour enregistrer des invocateurs personnalisés et l'ordre d'exécution est important. De mes tests l'ordre de décoration n'est pas toujours l'ordre dans lequel ils sont traités lors du chargement du service.

Des idées?

+0

Question intéressante que je n'ai malheureusement aucune idée de comment répondre. Avez-vous trouvé la réponse? –

+0

Non, je ne l'ai pas fait. J'ai dû fusionner les deux attributs en un et appliquer l'ordre juste là. – JCallico

Répondre

0

Je pense que votre solution pour fusionner les attributs en un était la bonne.

Cet article here traite de la priorité des différents mécanismes d'extension, et déclare que:

Au sein d'une collection de comportements, encore une fois, sans ordre est garanti.

Lorsqu'une collection peut être un ensemble de IOperationBehaviors défini sur une méthode.

Questions connexes