Partilhar via


CodeDelegate2.EndPoint Property

Definition

Gets the text point that is the location of the end of the delegate.

public:
 property EnvDTE::TextPoint ^ EndPoint { EnvDTE::TextPoint ^ get(); };
public:
 property EnvDTE::TextPoint ^ EndPoint { EnvDTE::TextPoint ^ get(); };
[System.Runtime.InteropServices.DispId(11)]
public EnvDTE.TextPoint EndPoint { [System.Runtime.InteropServices.DispId(11)] [System.Runtime.InteropServices.TypeLibFunc(1024)] get; }
[<System.Runtime.InteropServices.DispId(11)>]
[<get: System.Runtime.InteropServices.DispId(11)>]
[<get: System.Runtime.InteropServices.TypeLibFunc(1024)>]
member this.EndPoint : EnvDTE.TextPoint
Public ReadOnly Property EndPoint As TextPoint

Property Value

A TextPoint object.

Implements

Attributes

Examples

Before running this example, load a project with a class and insert the following line along with the example code. After both the line and the example code are added, click the Delegate line to place the insertion point there, and then run the example.

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

Remarks

The text point location is immediately after the last character of the delegate (including any semicolon, terminating syntax, or separating syntax). Returning the property implicitly opens the source file if it can be opened. Some languages, however, cannot open arbitrary files on the disk and can only open files in a currently open solution.

Note

The values of code model elements such as classes, structs, functions, attributes, delegates, and so forth can be non-deterministic after making certain kinds of edits, meaning that their values cannot be relied upon to always remain the same. For more information, see the section Code Model Element Values Can Change in Discovering Code by Using the Code Model (Visual Basic).

Applies to