Частичный класс C # и интерфейс COM - PullRequest
2 голосов
/ 19 марта 2010

Я создаю библиотеку C # и собираюсь открыть для нее интерфейс COM.

Я понимаю шаги, необходимые для этого, т. Е.

  1. Убедитесь, что GUID предположительно назначен, например: [assembly: Guid("dde7717b-2b75-4972-a4eb-b3d040c0a182")]
  2. Убедитесь, что атрибут COMVibile равен True
  3. Поместите атрибут GUID в класс, например, [GuidAttribute("4df74b15-d531-4217-af7e-56972e393904")]
  4. Зарегистрируйтесь, используя Regasm.

Мой вопрос такой. Если я определил частичный класс. Нужно ли добавлять GuidAttribute в оба этих класса?

На самом деле, думая об этом, я предполагаю, что этот вопрос применим к любому атрибуту (например, Serializable).

Буду признателен за любую помощь. Спасибо.

Ответы [ 2 ]

5 голосов
/ 19 марта 2010

Если вы примените атрибут дважды к одному и тому же классу (независимо от того, находится ли он в одном и том же файле или в двух разных файлах), тогда к классу будет применен атрибут дважды. Частичный класс, определенный в двух файлах, - это не два класса, это просто один класс, частично определенный в нескольких файлах. Поэтому нет, не повторяйте атрибут GuidAttribute в каждом файле снова.

2 голосов
/ 19 марта 2010

Во время компиляции атрибуты определений частичного типа объединяются. Например, следующие объявления:

[System.SerializableAttribute]
partial class Moon { }

[System.ObsoleteAttribute]
partial class Moon { }

эквивалентны:

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