Как получить ссылку на IStereotype в шаблоне T4? - PullRequest
1 голос
/ 02 марта 2010

Есть ли способ получить ссылку на интерфейс Microsoft.VisualStudio.Uml.Profiles.IStereotype в шаблоне t4? Я имею в виду IStereotype, который хранит определение стереотипа UML, а не IStereotypeInstance, который содержит фактическое значение. Я пробовал что-то подобное, но перечисление ApplicableStereotypes пусто.

void WriteClassAttributes( IClass classItem )
{
    foreach( IStereotypeInstance stereoInst in classItem.AppliedStereotypes )
    {
        this.WriteLine( string.Format( "{0} = {1}", stereoInst.Profile, stereoInst.Name ) );
    }
    foreach( IStereotype stereo in classItem.ApplicableStereotypes )
    {
        this.WriteLine( string.Format( "{0} = {1}", stereo.Profile.Name, stereo.Name ) );
    }
}

Я пытался получить IStereotype из ModelStore. Но свойство ProfileManager всегда возвращает ноль, и код прерывается.

string GetDefaultValue( IStereotypePropertyInstance stereoProp )
{
    IModelStore modelStore = stereoProp.GetModelStore();
    Microsoft.VisualStudio.Uml.Profiles.IProfile profile =
        modelStore.ProfileManager.GetProfileByName( profileName );

    foreach( IStereotype stereo in profile.Stereotypes )
    {
        if( stereo.Name == stereoProp.StereotypeInstance.Name  )
        {
            return stereo.DefaultValue;
        }
    }
}

Я застрял. Пожалуйста, помогите!

1 Ответ

0 голосов
/ 03 марта 2010

Я не так рад ответить на свой вопрос, но дело в том, что описанное поведение « по замыслу ». Я выполнял код в хранилище моделей, загруженном во внешнюю библиотеку классов, используя

IModelingProjectReader project = ModelingProject.LoadReadOnly( projectPath )

Код отлично работает при запуске из надстройки VS, которая имеет доступ к применяемому профилю, загружая также соответствующие стереотипы.

...