Частичный класс C# и COM-интерфейс
-
21-09-2019 - |
Вопрос
Я создаю библиотеку C# и собираюсь предоставить ей COM-интерфейс.
Я понимаю, какие шаги необходимо предпринять для этого, т.е.
- Убедитесь, что GUID сборки назначен, например:
[assembly: Guid("dde7717b-2b75-4972-a4eb-b3d040c0a182")]
- Убедитесь, что атрибут COMVible имеет значение True.
- Поместите атрибут GUID в класс, например.
[GuidAttribute("4df74b15-d531-4217-af7e-56972e393904")]
- Зарегистрируйтесь с помощью Регазма.
Мой вопрос заключается в следующем.Если у меня определен частичный класс.Нужно ли мне добавлять GuidAttribute
обоим этим классам?
На самом деле, думая об этом, я предполагаю, что этот вопрос применим к любому атрибуту (например, Serializable
).
Любая помощь будет оценена по достоинству.Спасибо.
Решение
Если вы примените атрибут дважды к одному и тому же классу (неважно, в одном и том же файле или в двух разных файлах), то к классу атрибут будет применен дважды.Частичный класс, определенный в двух файлах, — это не два класса, а всего лишь один класс, частично определенный в нескольких файлах.Итак, нет, не повторяйте GuidAttribute в каждом файле снова.
Другие советы
Во время компиляции атрибуты определений частичного типа объединяются.Например, следующие объявления:
[System.SerializableAttribute]
partial class Moon { }
[System.ObsoleteAttribute]
partial class Moon { }
эквивалентны:
[System.SerializableAttribute]
[System.ObsoleteAttribute]
class Moon { }