다음을 통해 공유


CodeAttribute2.Arguments 속성

이 특성과 관련된 CodeAttributeArgument 개체가 들어 있는 CodeElement 개체의 컬렉션을 가져옵니다.

네임스페이스:  EnvDTE80
어셈블리:  EnvDTE80(EnvDTE80.dll)

구문

‘선언
ReadOnly Property Arguments As CodeElements
CodeElements Arguments { get; }
property CodeElements^ Arguments {
    CodeElements^ get ();
}
abstract Arguments : CodeElements with get
function get Arguments () : CodeElements

속성 값

형식: 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#)