Propriedade CodeAttribute2.Collection
Obtém uma coleção de CodeAttribute2 objetos.
Namespace: EnvDTE80
Assembly: EnvDTE80 (em EnvDTE80.dll)
Sintaxe
'Declaração
ReadOnly Property Collection As CodeElements
CodeElements Collection { get; }
property CodeElements^ Collection {
CodeElements^ get ();
}
abstract Collection : CodeElements
function get Collection () : CodeElements
Valor de propriedade
Tipo: EnvDTE.CodeElements
Uma coleção de objetos CodeAttribute2.
Comentários
Observação |
---|
Valores de argumento de atributo de código, após ter sido atribuído, não são mantidos na memória por Visual Studioe assim, pode ou não ser válida quando ocorre uma futura atualização para o argumento de atributo de código.Ou seja, o acesso de um argumento subseqüente pode retornar E_FAIL ou um valor totalmente diferente.(Qualquer coisa que afete os filhos do elemento, no entanto, não tem esse problema.) Devido esse comportamento não-determinístico, você deve recuperar o valor do argumento antes a alterá-lo.Por exemplo, se você definir um argumento de atributo de código no seu código, como myAttrArg.Value = """a first value""", e em seguida, você deve referenciá-la explicitamente antes de atualizá-lo, como myAttrArg = myAttr.Arguments.Item("first value")e, em seguida, atribua o novo valor, myAttrArg.Value = """a second value""".Isso garante que o argumento correto é alterado. Além disso, os valores de elementos de modelo de código, como classes, estruturas, funções, atributos, delegados e assim por diante podem ser não-determinísticos depois de fazer determinados tipos de edições, o que significa que seus valores não confie sempre permanecer o mesmo.Para obter mais informações, consulte a seção valores de elemento de modelo de código podem ser alterada de Descobrindo o código usando o modelo de código (Visual Basic). |
Exemplos
O exemplo a seguir cria um novo espaço para nome e o atributo na classe atual e lista algumas das propriedades do atributo.
public void CreateClassAndAttrib(DTE2 applicationObject)
{
// Before running, load or create a project.
FileCodeModel2 fcm2 = GetFileCodeModel(applicationObject);
CodeAttribute2 cmAttribute;
CodeClass2 cmClass;
String msg = null;
if (fcm2 != null)
{
CodeNamespace cmNamespace;
// Try to create a new namespace.
try
{
cmNamespace = fcm2.AddNamespace("CMNamespace", -1);
// If successful, create the other code elements.
if (cmNamespace != null)
{
cmClass = (CodeClass2)cmNamespace.AddClass("ANewClass",
-1, null, null, vsCMAccess.vsCMAccessPrivate);
cmAttribute = (CodeAttribute2)cmClass.AddAttribute
("NewAttribute", "AttributeValue", -1);
msg += "Attribute count: " +
cmAttribute.Collection.Count + Environment.NewLine;
msg += "Document name: " +
cmAttribute.DTE.ActiveDocument.Name;
}
else
{
MessageBox.Show("Cannot continue - no filecodemodel
available.");
}
}
catch (Exception ex)
{
MessageBox.Show("ERROR: " + ex);
}
}
}
public FileCodeModel2 GetFileCodeModel(DTE2 applicationObject)
{
// Returns the FileCodeModel object of the active
// window.
TextWindow txtWin =
(TextWindow)applicationObject.ActiveWindow.Object;
FileCodeModel2 fcm2;
if (txtWin != null)
{
try
{
fcm2 = (FileCodeModel2)txtWin.Parent.
ProjectItem.FileCodeModel;
return fcm2;
}
catch (Exception ex)
{
MessageBox.Show("ERROR: " + ex);
return null;
}
}
else
return null;
}
Segurança do .NET Framework
- Confiança total para o chamador imediato. O membro não pode ser usado por código parcialmente confiável. Para obter mais informações, consulte Usando bibliotecas de código parcialmente confiáveis.
Consulte também
Referência
Outros recursos
Como: compilar e executar os exemplos de código de modelo de objeto de automação
Descobrindo o código usando o modelo de código (Visual Basic)