1

t4テンプレートでMicrosoft.VisualStudio.Uml.Profiles.IStereotypeインターフェイスへの参照を取得する方法はありますか?つまり、実際の値を保持するIStereotypeInstanceではなく、UMLステレオタイプの定義を格納するIStereotypeを意味します。このようなことを試しましたが、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 ) );
    }
}

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

私は立ち往生しています。助けてください!

4

1 に答える 1

0

私自身の質問に答えるのはそれほど幸せではありませんが、実際には、説明されている動作は「設計による」ものです。外部クラスライブラリにロードされたモデルストアでコードを実行していました

IModelingProjectReader project = ModelingProject.LoadReadOnly( projectPath )

適用されているプロファイルにアクセスできるVSアドインから実行し、該当するステレオタイプもロードする場合、コードは完全に機能します。

于 2010-03-03T15:14:52.183 に答える