2010-03-02 3 views
1

t4 템플릿의 Microsoft.VisualStudio.Uml.Profiles.IStereotype 인터페이스에 대한 참조를 얻을 수있는 방법이 있습니까? 나는 실제 값을 보유하고있는 IStereotypeInstance가 아니라 UML 스테레오 타입의 정의를 저장하는 IStereotype을 의미합니다. 이런 식으로 시도했지만 ApplicableStereotypes enumereation이 비어 있습니다. 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에서 실행하는 경우 코드는 완벽하게 작동

사용하여 외부 클래스 라이브러리에로드 모델 저장소에서 코드를 실행했다 고정 관념도.