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 安全性
- 完全信任立即呼叫者。這個成員無法供部分信任的程式碼使用。如需詳細資訊,請參閱從部分受信任程式碼使用程式庫。