Est-il possible de limiter le nombre de propriétés auxquelles un attribut est appliqué dans une classe particulière?C# Limite d'attribut
Répondre
Au moment de la compilation no. Lors de l'exécution, vous pouvez valider ceci via un initialiseur statique qui lance si cet invariant est violé bien que ce soit considéré comme un style très pauvre, il serait sûr dans le sens qu'aucun code ne pourrait s'exécuter alors que l'invariant ne tient pas.
Si vous pensez à l'extensibilité inhérente à .Net, même si vous pouvez le vérifier au moment de la compilation imaginer:
dll A avec la compilation
public class Foo
{
public int Property1 {get;}
}
B faisant référence dll compilation A.dll avec classe
public class Bar
{
[OnlyOneAllowedOnAnyPropertiesPerClass]
public int Property2 {get;}
}
vous recompiler A.dll avec
public class Foo
{
[OnlyOneAllowedOnAnyPropertiesPerClass]
public int Property1 {get;}
}
et tenter de lancer cette nouvelle A.dll avec l'ancien B.dll (ils sont binaires compatibles à tous autres égards cela est si bien)
Il est clair que le temps d'exécution aurait à faire bon sens d'un effort considérable de vérifier cela, non pour mentionner que B pourrait ne pas être chargé pendant un certain temps soudainement Rendre un ou les deux A et B 'illégaux'.
Par conséquent, vous ne devriez pas attendre que cette fonctionnalité soit disponible dans le framework.
Je ne pense pas que ce soit possible au moment de la compilation. Mais vous pouvez ajouter du code aux constructeurs d'instance ou à un constructeur statique qui vérifie cela via la réflexion au moment de l'exécution.
S'il est important (ou juste après) la compilation, vous devez créer une règle FxCop ou une recherche personnalisée pour votre attribut (comme modèle [OnlyOnceAttribute]).
findstr "[OnlyOnceAttribute]" *.cs
Le findstr utilitaire renvoie les lignes correspondantes. Vous n'avez besoin que d'un fichier batch qui capture le nombre de lignes et get back d'une erreur à l'appelant (= tâche MSBuild), et la génération échoue.
bonne idée mais notez que les classes partielles et l'héritage vont à la fois renverser cette et plusieurs classes dans un fichier causerait des faux positifs. Aller à une règle FxCop correcte fonctionnerait tant que vous avez accès à la base de code totale sous forme compilée. – ShuggyCoUk
- 1. Limite Nombre de caractères dans C# Chaîne
- 2. Limite availableProcessors
- 3. Sql Express 2005 Limite
- 4. richTextBox limite de caractères?
- 5. Les enum ont-ils une limite de membres en C#?
- 6. ASP.NET MVC: limite PathInfo?
- 7. Limite de mémoire PHP
- 8. Limite de bloc Memcached
- 9. Mysql Joindre avec limite?
- 10. Demandes limite par heure
- 11. Limite d'affichage en vb6
- 12. MySQL requête limite groupwise
- 13. MySql Filesize Limite Options
- 14. Limite la création d'instances d'une classe?
- 15. Limite de caractères en HTML
- 16. URL de l'ASP.NET limite MAX_PATH
- 17. Limite de connexion HTTP ASP.NET
- 18. j2me post limite de données
- 19. jquery ajax Taille limite POST?
- 20. Limite double à deux décimales
- 21. Limite de demandes simultanées IIS
- 22. Limite de ressources table temporaire
- 23. Dépassement de la limite de la mémoire Wordpress dépassée, SANS modification de la limite du serveur
- 24. mssql_fetch_object limite de caractères de texte?
- 25. Limite Derby Taille du fichier journal
- 26. Limite taille de Net chercher :: HTTP.request_get
- 27. Qu'est-ce qui limite WCF ServiceModelService.Instances?
- 28. Comment faire l'équivalent de "limite distincte"?
- 29. Toute limite WorkAround For Java ResultSet
- 30. PHP fopen() Limite Redirection atteint Erreur
Non. Pourquoi voulez-vous faire cela? –