次の方法で共有


CodeAttribute2.Arguments プロパティ

この属性に関連付けられた CodeAttributeArgument オブジェクトを含む CodeElement オブジェクトのコレクションを取得します。

名前空間:  EnvDTE80
アセンブリ:  EnvDTE80 (EnvDTE80.dll 内)

構文

'宣言
ReadOnly Property Arguments As CodeElements
CodeElements Arguments { get; }
property CodeElements^ Arguments {
    CodeElements^ get ();
}
abstract Arguments : CodeElements
function get Arguments () : CodeElements

プロパティ値

型 : EnvDTE.CodeElements
CodeElement オブジェクトのコレクション。

解説

これは、Visual Studio 2005 の新しいプロパティです。

[!メモ]

Visual Studio では、割り当てられたコード属性引数はメモリに保持されないため、将来、コード属性引数の更新が発生したときに有効でないこともあります。つまり、それ以降、引数にアクセスした場合に、E_FAIL や、まったく異なる値が返される可能性があります。ただし、要素の子に影響を及ぼす引数については、この問題はありません。

このように、引数の値が非確定的なため、値は変更する前に取得します。たとえば、myAttrArg.Value = """a first value""" などのコード属性引数をコードに設定した場合は、更新前に、そのコード属性引数を明示的に参照 (myAttrArg = myAttr.Arguments.Item("first value")) してから、新しい値を割り当てます (myAttrArg.Value = """a second value""")。これによって、正確な引数を変更できます。

また、特定の種類の編集を行うと、クラス、構造体、関数、属性、デリゲートなどのコード モデル要素が非確定的な値になる場合があります。つまり、これらの要素の値は、常に同じ値になるとは限りません。詳細については、「コード モデルを使用したコードの調査 (Visual Basic)」で、コード モデル要素値を変更する方法についての説明を参照してください。

// The following example creates a new namespace and attribute in
// the current class and lists some of the attribute's properties.
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 += "Arguments: " + cmAttribute.Arguments + 
                Environment.NewLine;
                msg += "Count: " + cmAttribute.Children.Count + 
                Environment.NewLine;
                msg += "Endpoint Location: " + 
                cmAttribute.EndPoint.DisplayColumn + 
                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;
}

.NET Framework セキュリティ

  • 直前の呼び出し元に対する完全な信頼。このメンバーは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。

参照

関連項目

CodeAttribute2 インターフェイス

EnvDTE80 名前空間

その他の技術情報

方法 : オートメーション オブジェクト モデルのコード例をコンパイルおよび実行する

コード モデルを使用したコードの調査 (Visual Basic)

コード モデルを使用したコードの調査 (Visual C#)