2010-03-02 29 views
1

有沒有辦法在t4模板中獲得對Microsoft.VisualStudio.Uml.Profiles.IStereotype接口的引用?我的意思是存儲UML原型的定義的IStereotype,而不是保存實際值的IStereotypeInstance。 我嘗試了這樣的事情,但ApplicableStereotypes枚舉是空的。如何在T4模板中獲取IStereotype參考?

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

我試圖從ModelStore獲取IStereotype。但是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運行時加載項可以訪問配置文件正在應用,加載應用的代碼工作完全裝上一個外部類庫的模型店的代碼刻板印象。