Em C #, existe uma maneira de acessar comentários xml (as tags no VS) no código-fonte em tempo de execução?
-
27-10-2019 - |
Pergunta
No Visual Studio, comentários xml podem ser adicionados a métodos / classes para fornecer documentação. Consulte http://msdn.microsoft.com/en-us/magazine/cc302121.aspx .
O Visual Studio gera arquivos a partir desses comentários xml e os exporta, para que sejam acessíveis com certeza.
Minha pergunta é: existe algum tipo de classe que permite ao programa acessar o texto xml em tempo de execução?(Acho que a forma de força bruta é analisar os arquivos exportados, mas essa não é uma solução legal)
O motivo pelo qual quero fazer isso é porque estou criando uma espécie de programa auxiliar para um programa maior, então quero enviar os comentários xml para a tela.Eu tenho o nome da propriedade por meio de reflexão, então há uma maneira de alimentar o nome de volta para alguma classe e obter a documentação xml?
Já tentei pesquisar, mas não consegui encontrar nada.Eu posso estar formulando mal.Isso é possível?
Solução
Até onde eu sei, os comentários XML não são salvos como metadados no arquivo binário do assembly (.exe ou .dll).Portanto, a única opção é analisar diretamente o arquivo XML gerado pelo Visual Studio.
Outras dicas
Comentários XML são retirados do executável - é por isso que há um sinalizador de compilador especial para gerar a documentação XML deles, para que não se percam.
Existem ferramentas que ajudam a gerar ajuda em HTML e outros formatos a partir desses arquivos XML.
Experimente DocsByReflection .
// From type.
var typeDoc = DocsService.GetXmlFromType(typeof(Stub));
// From property.
var propertyInfo = typeof(Stub).GetProperty("PropertyWithDoc");
var propertyDoc = DocsService.GetXmlFromMember(propertyInfo);
// From method.
var methodInfo = typeof(Stub).GetMethod("MethodWithGenericParameter");
var methodDoc = DocsService.GetXmlFromMember(methodInfo);
// From assembly.
var assemblyDoc = DocsService.GetXmlFromAssembly(typeof(Stub).Assembly);