Pergunta

Existe uma maneira de obter uma referência para a interface Microsoft.VisualStudio.uml.profiles.isterEotype em um modelo T4? Quero dizer, o isteretipo que armazena a definição do estereótipo UML, e não o isteroTyPeInstance que mantém o valor real. Eu tentei algo assim, mas os aplicativos de enumeração dos aplicativos estão vazios.

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

Eu tentei obter istereotype da ModelStore. Mas a propriedade Profilemanager sempre retorna nulo e o código quebra.

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

Estou preso. Por favor ajude!

Foi útil?

Solução

Você precisa criar um componente de tempo de execução do Windows criando uma biblioteca de classes a partir do "Visual C #" -> "Estilo do Windows Metro" -> Modelo de "Biblioteca de Classe". Em seguida, nas propriedades para esse projeto de biblioteca de classes, você precisa marcar o tipo de saída como "arquivo winmd"

Melhores instruções podem ser encontradas aqui:

http:// msdn .microsoft.com / pt-us / biblioteca / Windows / apps / hh779077 (v= vs.110) .aspx

Isso não é indicado na documentação e é provavelmente apenas um bug com a visualização do consumo do Windows 8 e o Visual Studio 11 Beta, mas certifique-se de não incluir um período no nome do projeto que você está referenciando. Por exemplo, eu estava trabalhando em um aplicativo de carro, então fiz uma assembléia chamada "Car.Business". O aplicativo sempre falha com uma tela de inicialização em branco sempre que tentei referenciar isso. Se, por outro lado, acabei de usar "Business" como o nome da montagem, então o aplicativo funcionaria bem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top