2010-07-20 3 views
2

Je suis curieux de savoir s'il est possible de créer 2 interfaces dans .NET (dans le même assemblage ou dans des assemblages séparés) qui peuvent être traitées comme équivalentes, en utilisant le nouvel attribut TypeIdentifierAttribute. Je n'ai pas trouvé de chemin. J'ai vu quelques trucs sur Internet qui suggèrent que cela serait finalement possible, mais il semble que l'implémentation actuelle est seulement pour COM interops. Je comprends que les intentions immédiates étaient d'intégrer des interop COM. Je ne parle pas de COM Interops.Peut-on utiliser TypeIdentifierAttribute dans .NET sans COM?

En outre, je ne suis pas intéressé à discuter pourquoi je voudrais faire cela, je ne veux pas conduire cette question à d'autres types de solutions. Disons simplement que j'expérimente et que je veux voir s'il y a quelque chose que nous pouvons faire avec TypeIdentifierAttribute.

Répondre

3

Selon les deux documentation et anecdotal evidence, il est possible de faire fonctionner l'équivalence de type avec des interfaces standard, non-COM. Dans la documentation, il semble que vous n'avez pas besoin de TypeIdentifierAttribute si vos interfaces résident dans des assemblages différents. Pour avoir deux interfaces traitées comme équivalentes, vous avez juste besoin de:

  1. Assurez-vous que les deux ont le même nom et vivent dans le même espace de noms.
  2. Appliquez-leur les GuidAttribute en leur attribuant le même Guid.
+0

Merci, votre deuxième lien m'a conduit à http://blogs.msdn.com/b/mshneer/archive/2008/10/28/advances-in-net-type-system-type-equivalence- demo.aspx qui avait un code source de démonstration très utile. –