共用方式為


CodeAttribute2.Collection 屬性

取得 CodeAttribute2 物件的集合。

命名空間:  EnvDTE80
組件:  EnvDTE80 (在 EnvDTE80.dll 中)

語法

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

屬性值

型別:EnvDTE.CodeElements
CodeAttribute2 物件的集合。

備註

注意事項注意事項

在經由 Visual Studio 指派之後,程式碼屬性引數值便不會繼續保留在記憶體中,所以當更新程式碼屬性引數時,這些值便可能為有效或無效。也就是說,接下來的引數存取或許會傳回 E_FAIL 或是完全不同的值 (然而,任何會影響這個項目之子系的因素,都不會有這個問題)。

由於這種非決定性的行為,所以您應該先擷取這個引數的值之後再進行變更的動作。例如,如果您在程式碼中設定程式碼屬性引數 (例如 myAttrArg.Value = """a first value"""),則必須在明確參考這個引數之後,才能進行更新的動作 (myAttrArg = myAttr.Arguments.Item("first value")),接著指派新的值 (myAttrArg.Value = """a second value""")。這麼做便可以確定這個正確的引數已經遭到變更。

另外像是類別、建構、函式、屬性 (Attribute)、委派 (Delegate) 等這些程式碼模型元素的值,在經過特定方式的編輯之後也可以為非決定性,即表示這些值將不再固定。如需詳細資訊,請參閱使用程式碼模型探索程式碼 (Visual Basic) 的<程式碼模型項目值可以變更>一節。

範例

下列範例會在目前的類別中建立新的命名空間和屬性,並列出屬性 (Attribute) 的部分屬性 (Property)。

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

.NET Framework 安全性

請參閱

參考

CodeAttribute2 介面

Collection 多載

EnvDTE80 命名空間

其他資源

HOW TO:編譯和執行 Automation 物件模型程式碼範例

使用程式碼模型探索程式碼 (Visual Basic)

使用程式碼模型探索程式碼 (Visual C#)