2010-03-19 26 views
2

Je crée une bibliothèque C# et je vais y exposer une interface COM.C# Classe partielle et interface COM

Je comprends les étapes requried pour ce faire, à savoir

  1. Veiller à ce assumbly GUID est attribué, par exemple: [assembly: Guid("dde7717b-2b75-4972-a4eb-b3d040c0a182")]
  2. Assurez-attribut COMVibile est vrai
  3. Mettez un attribut GUID de la classe, par exemple [GuidAttribute("4df74b15-d531-4217-af7e-56972e393904")]
  4. Registre utilisant Regasm.

Ma question est la suivante. Si j'ai une classe partielle définie. Ai-je besoin d'ajouter le GuidAttribute à ces deux classes?

En fait, en pensant à cela, je suppose que cette question s'applique quel que soit l'attribut (par exemple Serializable).

Toute aide serait appréciée. Merci.

Répondre

4

Si vous appliquez deux fois un attribut à la même classe (que ce soit dans le même fichier ou dans deux fichiers différents), la classe aura l'attribut appliqué deux fois. Une classe partielle définie dans deux fichiers n'est pas deux classes, c'est juste une classe partiellement définie dans plusieurs fichiers. Donc, non, ne répétez pas le GuidAttribute dans chaque fichier à nouveau.

+1

Merci. En fait, même tenter de l'ajouter deux fois entraîne un échec. –

1

Lors de la compilation, les attributs des définitions de type partiel sont fusionnés. Par exemple, les déclarations suivantes:

[System.SerializableAttribute] 
partial class Moon { } 

[System.ObsoleteAttribute] 
partial class Moon { } 

sont équivalentes à:

[System.SerializableAttribute] 
[System.ObsoleteAttribute] 
class Moon { }