Propriedade CodeDelegate2.InfoLocation
Obtém os recursos do modelo de código para o delegado.
Namespace: EnvDTE80
Assembly: EnvDTE80 (em EnvDTE80.dll)
Sintaxe
'Declaração
ReadOnly Property InfoLocation As vsCMInfoLocation
vsCMInfoLocation InfoLocation { get; }
property vsCMInfoLocation InfoLocation {
vsCMInfoLocation get ();
}
abstract InfoLocation : vsCMInfoLocation with get
function get InfoLocation () : vsCMInfoLocation
Valor de propriedade
Tipo: vsCMInfoLocation
A vsCMInfoLocation valor constante.
Comentários
Se InfoLocation retorna vsCMInfoLocationProject, e em seguida, você pode definir propriedades, obter um StartPointe obter um EndPoint. Quando você entrar no objeto de modelo de código de um (A) para outro (B) — por exemplo, de uma função para seu tipo ou de uma classe para sua classe base — B pode ser do tipo vsCMInfoLocationExternal se a sua definição é em outro projeto. A disposição depende a implementação do modelo de código, se o projeto de objeto do b é implementado no mesmo idioma do objeto do
Se InfoLocation retorna vsCMInfoLocationExternal, e em seguida, as informações estão disponíveis somente a partir de metadados, inspecionando uma DLL, ou de fontes congeladas. Talvez você possa obter um StartPoint e EditPoint2, mas você não pode editar o documento. ou seja, você não pode definir propriedades ou modificar o texto atrás do elemento de código.
Se InfoLocation retorna vsCMInfoLocationNone, e em seguida, tudo o que está disponível é um objeto de modelo de código que tem um nome. Além disso, com base no contexto de código fonte, em alguns casos você pode dizer se o nome deve ser uma classe ou uma interface. Nessa situação, no entanto, porque o modelo de código não foi possível resolver o nome a qualquer informação útil, o objeto é contrário inútil.
Dica
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 código usando o modelo de código (Visual Basic).
Exemplos
Antes de executar este exemplo, carregar um projeto com uma classe e insira a linha a seguir junto com o código de exemplo. Após a linha e o código de exemplo são adicionados, clique no Delegate linha para colocar o ponto de inserção nesse local e execute o exemplo.
[VisualBasic]
Delegate Sub MySubDelegate(ByVal x As Integer)
[C#]
public delegate void MySubDelegate(int x);
[VisualBasic]
Public Sub CodeDelegateExample(ByVal dte As DTE2)
' Before running this example, open a code document from a
' project and place the insertion point inside a class
' definition.
Try
' Retrieve the CodeClass at the insertion point.
Dim sel As TextSelection = _
CType(DTE.ActiveDocument.Selection, TextSelection)
Dim del As CodeDelegate2 = _
CType(sel.ActivePoint.CodeElement( _
vsCMElement.vsCMElementDelegate), CodeDelegate2)
Dim elem As CodeElement2
Dim sb As New System.Text.StringBuilder
' Display the baseclass name of the delegate.
sb.AppendLine("Delegate base class name: " & _
del.BaseClass.Name)
sb.AppendLine("Delegate's access: " & del.Access.ToString)
sb.AppendLine("Children: " & del.Children.Count & " _
Name: " & del.Children.Item(1).Name)
sb.AppendLine("Collection: " & del.Collection.Count)
sb.AppendLine("Delegates:")
For Each elem In del.Collection
sb.AppendLine(" - " & elem.Name)
Next
sb.AppendLine("Comment: " & del.Comment)
sb.AppendLine("Doc Comment: " & del.DocComment)
sb.AppendLine("DTE Parent: " & del.DTE.Name)
sb.AppendLine("Endpoint location: " & _
del.EndPoint.AbsoluteCharOffset)
sb.AppendLine("Infolocation: " & del.InfoLocation.ToString)
sb.AppendLine("Can provide CodeType object? " & _
del.IsCodeType.ToString)
sb.AppendLine("Is Delegate derived? " & _
del.IsDerivedFrom("EnvDTE80"))
sb.AppendLine("Is Delegate a generic? " & del.IsGeneric)
sb.AppendLine("Kind: " & del.Kind.ToString)
sb.AppendLine("Authoring language: " & _
del.Language.ToString)
sb.AppendLine("Name: " & del.Name)
sb.AppendLine("Namespace: " + del.Namespace.Name);
sb.AppendLine("Parameters: " & del.Parameters.Item(1).Name)
sb.AppendLine("Project containing the delegate: " & _
del.ProjectItem.Name)
sb.AppendLine("Prototype for delegate: " & del.Prototype)
sb.AppendLine("Delegate start point offset: " & _
del.StartPoint.LineCharOffset)
sb.AppendLine("Type: " & del.Type.TypeKind.ToString)
MsgBox(sb.ToString)
Catch ex As System.Exception
MsgBox(ex.ToString)
End Try
End Sub
[C#]
public void CodeDelegateExample(DTE2 DTE)
{
try
{
// Retrieve the CodeClass at the insertion point.
TextSelection sel = (TextSelection)
DTE.ActiveDocument.Selection;
CodeDelegate2 del = (CodeDelegate2)
sel.ActivePoint.get_CodeElement
(vsCMElement.vsCMElementDelegate);
System.Text.StringBuilder sb = new System.Text.StringBuilder();
// Display the baseclass name of the delegate.
sb.AppendLine("Delegate base class name: " +
del.BaseClass.Name);
sb.AppendLine("Delegate's access: " + del.Access);
sb.AppendLine("Children: "+del.Children.Count+" Name:
"+del.Children.Item(1).Name);
sb.AppendLine("Collection: "+del.Collection.Count);
sb.AppendLine("Delegates:");
foreach (CodeElement2 elem in del.Collection )
{
sb.AppendLine(" - "+elem.Name);
}
sb.AppendLine("Comment: "+del.Comment);
sb.AppendLine("Attributes:");
foreach (CodeElement2 elem in del.Attributes)
{
sb.AppendLine(" - " + elem.Name);
}
sb.AppendLine("Bases:");
foreach (CodeElement2 elem in del.Bases)
{
sb.AppendLine(" - " + elem.Name);
}
sb.AppendLine("Doc Comment: " + del.DocComment);
sb.AppendLine("DTE Parent: "+del.DTE.Name);
sb.AppendLine("Endpoint location:
"+del.EndPoint.AbsoluteCharOffset);
sb.AppendLine("Infolocation: "+del.InfoLocation);
sb.AppendLine("Can provide CodeType object? "+del.IsCodeType);
sb.AppendLine("Is Delegate derived?
"+del.get_IsDerivedFrom("EnvDTE80"));
sb.AppendLine("Is Delegate a generic? "+del.IsGeneric);
sb.AppendLine("Kind: "+del.Kind);
sb.AppendLine("Authoring language: "+del.Language);
sb.AppendLine("Name: "+del.Name);
sb.AppendLine("Parameters: "+del.Parameters.Item(1).Name);
sb.AppendLine("Namespace: " + del.Namespace.Name);
sb.AppendLine("Project containing the delegate:
"+del.ProjectItem.Name);
sb.AppendLine("Delegate start point offset:
"+del.StartPoint.LineCharOffset);
sb.AppendLine("Type: "+del.Type.TypeKind);
MessageBox.Show(sb.ToString());
}
catch(System.Exception ex)
{
MessageBox.Show(ex.Message);
}
}
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ável.
Consulte também
Referência
Outros recursos
Como compilar e executar os exemplos de código do modelo de objeto Automation