CodeAttribute2.Arguments - свойство
Возвращает коллекцию объектов CodeElement, содержащую объекты CodeAttributeArgument, связанные с данным атрибутом.
Пространство имен: 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
- Полное доверие для непосредственно вызывающего метода. Этот член не может быть использован частично доверенным кодом. Дополнительные сведения см. в разделе Использование библиотек из не вполне надежного кода.
См. также
Ссылки
Другие ресурсы
Практическое руководство. Компиляция и выполнение примеров кода модели объектов автоматизации
Практическое руководство. Поиск кода при помощи модели кода (Visual Basic)
Практическое руководство. Поиск кода при помощи модели кода (Visual C#)