2015-11-25 1 views

Répondre

1

AttributeExclude peut être utilisé pour supprimer toutes les autres instances du même type d'attribut de l'ensemble d'éléments spécifié.

AutoDataContractAttribute peut être multidiffusée en utilisant le fichier de configuration XML PostSharp à toutes les classes de MyNamespace.Customer:

<my:AutoDataContractAttribute AttributeTargetTypes="MyNamespace.Customer" /> 

Dire l'attribut ne doit pas être types multidiffusée dans MyNamespace.Customer.Excluded espace de noms. Cela pourrait se faire en ajoutant:

<my:AutoDataContractAttribute AttributeExclude="True" AttributeTargetTypes="MyNamespace.Customer.Excluded.*" /> 

exemple entier:

<?xml version="1.0" encoding="utf-8"?> 
<Project xmlns="http://schemas.postsharp.org/1.0/configuration"> 
    <Multicast xmlns:my="clr-namespace:MyCustomAttributes;assembly:MyAssembly"> 
     <my:AutoDataContractAttribute AttributeTargetTypes="MyNamespace.Customer" /> 
     <my:AutoDataContractAttribute AttributeExclude="True" AttributeTargetTypes="MyNamespace.Customer.Excluded.*" /> 
    </Multicast> 
</Project> 

Quand AttributeExclude est vrai, AttributePriority propriété doit être spécifiée aussi bien. Cela se fait automatiquement lors de l'utilisation de XML, mais dans des cas plus compliqués, cela pourrait ne pas être suffisant et vous devrez spécifier le AttributePriority explicitement. Cela pourrait être fait par adding aspects declaratively using attributes:

[assembly: AutoDataContractAttribute(AttributePriority = 1, 
    AttributeTargetTypes="MyNamespace.Customer")] 
[assembly: AutoDataContractAttribute(AttributeExclude = true, 
    AttributeTargetTypes = "MyNamespace.Customer.Excluded.*", 
    AttributePriority = 10)]