Метаданные - действительно единственно возможный вариант, особенно если вы хотите, чтобы идентификатор оставался стабильным в течение долгого времени, например, при перезапуске приложения или реализации класса рефакторинг / переименование.
Если вам не нужна стабильность между перезапусками приложения, вы можете:
- Используйте MEF 2
RegistrationBuilder
для программного генерирования необходимых значений метаданных, например, на основе возрастающего целого числа; или
- Создайте пользовательский
[MetadataAttribute]
, который делает примерно то же самое для генерации значения идентификатора во время выполнения
Если вам нужна стабильность между перезапусками, но не между перестроениями, тогда можно использовать RegistrationBuilder
для назначения идентификаторов на основе имени типа.
Конечно, RegistrationBuilder
доступен только в предварительных сборках CodePlex MEF 2 или .NET 4.5 Developer Preview на данный момент.
TLDR; Лучше всего вручную применять атрибуты метаданных. В режиме отладки вы можете написать подпрограмму после инициализации в своем приложении, чтобы обеспечить уникальность / присутствие.