Udostępnij za pośrednictwem


Metoda CodeAttribute2.AddArgument —

Dodaje atrybut argumentu.

Przestrzeń nazw:  EnvDTE80
Zestaw:  EnvDTE80 (w EnvDTE80.dll)

Składnia

'Deklaracja
Function AddArgument ( _
    Value As String, _
    Name As Object, _
    Position As Object _
) As CodeAttributeArgument
CodeAttributeArgument AddArgument(
    string Value,
    Object Name,
    Object Position
)
CodeAttributeArgument^ AddArgument(
    String^ Value, 
    [InAttribute] Object^ Name, 
    [InAttribute] Object^ Position
)
abstract AddArgument : 
        Value:string * 
        Name:Object * 
        Position:Object -> CodeAttributeArgument
function AddArgument(
    Value : String, 
    Name : Object, 
    Position : Object
) : CodeAttributeArgument

Parametry

  • Value
    Typ: String

    Wymagany.Wartość domyślna jest 0. element, po którym ma być dodany nowy element.Jeśli wartość jest CodeElement, a następnie nowy element jest dodawany po argumencie, CodeElement. Jeśli wartość jest Long , typ danych, a następnie wskazuje, po którym chcesz dodać nowy element.Ponieważ kolekcje są oparte na jeden, przekazując zero wskazuje, że nowy element powinien być umieszczony na początku kolekcji.Wartość-1 oznacza cały argument na końcu.

  • Name
    Typ: Object

    Wymagany.Wartość argumentu.

  • Position
    Typ: Object

    Opcjonalne.Jeśli argument jest nazwany parametr, ten parametr zawiera nazwę argumentu.

Wartość zwracana

Typ: EnvDTE80.CodeAttributeArgument
Obiekt CodeAttributeArgument.

Uwagi

[!UWAGA]

Kod atrybutu argument wartości, po nadaniu im, nie są zachowywane w pamięci przez Visual Studioi w ten sposób, może lub nie może być ważne, gdy wystąpi przyszłych aktualizacji do argumentu atrybutu kodu.Oznacza to, że dostęp kolejnego argumentu może zwracać E_FAIL lub zupełnie inną wartość. (Wszystko, co ma wpływ na elementy podrzędne elementu, jednak nie ma tego problemu.)

Ze względu na to zachowanie deterministyczny należy pobrać wartość argumentu przed zmianą.Na przykład, jeśli w kodzie, ustawić takie jak argument atrybut kod myAttrArg.Value = """a first value""", a następnie należy jawnie odwołać ją przed aktualizacją, takich jak myAttrArg = myAttr.Arguments.Item("first value"), a następnie przypisz nową wartość myAttrArg.Value = """a second value""".Rozwiązanie to zapewnia, że poprawny argument jest zmieniany.

Ponadto wartości elementów modelu kodu, takich jak klasy, strukturach, funkcje, atrybuty, delegatów i tak dalej mogą być deterministyczny, po dokonaniu niektórych rodzajów modyfikacji, co oznacza, że ich wartości nie mogą być powoływane do zawsze pozostają takie same.Aby uzyskać więcej informacji, zobacz sekcję wartości elementu modelu kod można zmienić w Odnajdowanie kodu za pomocą modelu kodu (Visual Basic).

Przykłady

Poniższy przykład tworzy nowy obszar nazw i atrybut w bieżącej klasy i zawiera listę niektórych właściwości atrybutu.

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 += "# of Arguments: " + cmAttribute.Arguments.Count 
                + Environment.NewLine;
                MessageBox.Show(msg);
                cmAttribute.AddArgument("NewAddedValue", null, null);
                msg += "# of Arguments: " + cmAttribute.Arguments.Count 
                + Environment.NewLine;
                MessageBox.Show(msg);                       
            }
            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;
}

Zabezpieczenia programu .NET Framework

Zobacz też

Informacje

CodeAttribute2 Interfejs

Przestrzeń nazw EnvDTE80

Inne zasoby

Porady: kompilowanie i uruchamianie kodu modelu obiektów automatyzacji — przykłady

Odnajdowanie kodu za pomocą modelu kodu (Visual Basic)

Odnajdowanie kodu za pomocą modelu kodu (Visual C#)