2010-03-02 3 views
1

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

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 всегда возвращает null и код прерывается.

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; 
     } 
    } 
} 

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

ответ

0

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

IModelingProjectReader project = ModelingProject.LoadReadOnly(projectPath) 

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

Смежные вопросы