ManagementReferenceAttribute 클래스

정의

ManagementReferenceAttribute는 클래스 멤버, 속성 또는 메서드 매개 변수를 다른 관리 개체 또는 클래스에 대한 참조로 표시합니다.

참고: WMI .NET 라이브러리는 이제 최종 상태로 간주되며 이러한 라이브러리에 영향을 주는 비보안 관련 문제에 대해 추가 개발, 개선 또는 업데이트를 사용할 수 없습니다.

public ref class ManagementReferenceAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property, AllowMultiple=false)]
public sealed class ManagementReferenceAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property, AllowMultiple=false)>]
type ManagementReferenceAttribute = class
    inherit Attribute
Public NotInheritable Class ManagementReferenceAttribute
Inherits Attribute
상속
ManagementReferenceAttribute
특성

예제

이 예제에서는 특성을 함께 ManagementQualifierAttribute 사용하여 ManagementReferenceAttribute 다른 두 WMI 클래스를 연결하는 연결 WMI 클래스를 만드는 방법을 보여 줍니다. 이 예제는 루트/assoc 네임스페이스에 세 개의 WMI 클래스를 노출하는 분리된 공급자입니다. 처음 두 클래스인 NumberPhonetic과 NumberLetter는 마지막 클래스인 LetterPhonetic에 의해 연결됩니다.

예제를 컴파일하려면 System.Management.Instrumentation 및 System.Configuration.Install 모두에 대한 참조를 포함해야 합니다. 결과 실행 파일에 대해 installutil.exe 실행하고 구현된 WMI 클래스를 사용하기 위해 프로그램이 실행 중인지 확인해야 합니다.

using System;
using System.Collections;
using System.Management.Instrumentation;

[assembly: WmiConfiguration("root/assoc", HostingModel = ManagementHostingModel.Decoupled)]

[System.ComponentModel.RunInstaller(true)]
public class TheInstaller : DefaultManagementInstaller
{ }

namespace AssocExample
{
    class Program
    {
        static void Main(string[] args)
        {
            InstrumentationManager.RegisterType(typeof(NumberPhonetic));
            InstrumentationManager.RegisterType(typeof(NumberLetter));
            InstrumentationManager.RegisterType(typeof(LetterPhonetic));

            Console.WriteLine("Press enter to exit");
            Console.ReadLine();

            InstrumentationManager.UnregisterType(typeof(NumberPhonetic));
            InstrumentationManager.UnregisterType(typeof(NumberLetter));
            InstrumentationManager.UnregisterType(typeof(LetterPhonetic));

        }
    }

  [ManagementEntity]
    public class NumberPhonetic
    {
        [ManagementKey]
        public int Number;

        [ManagementProbe]
        public string Name;

        [ManagementBind]
        public NumberPhonetic(int Number)
        {
           this.Number = Number;
           if(Number == 1)
           {
              Name = "alpha";
           }
           else if(Number == 2)
           {
              Name = "bravo";
           }
           else
           {
              throw new InstanceNotFoundException();
           }
        }

        [ManagementEnumerator]
        static public IEnumerable EnumerateInstances()
        {
            for (int i = 1; i < 3; i++)
            {
                yield return new NumberPhonetic(i);
            }
        }

    }

    [ManagementEntity]
    public class NumberLetter
    {
        [ManagementKey]
        public int Number;

        [ManagementProbe]
        public string Letter;

        [ManagementBind]
        public NumberLetter(int Number)
        {
           this.Number = Number;
           if(Number == 1)
           {
              Letter = "A";
           }
           else if(Number == 2)
           {
              Letter = "B";
           }
           else
           {
              throw new InstanceNotFoundException();
           }
        }

        [ManagementEnumerator]
        static public IEnumerable EnumerateInstances()
        {
            for (int i = 1; i < 3; i++)
            {
                yield return new NumberLetter(i);
            }
        }

    }

    [ManagementEntity]
    [ManagementQualifier("Association", Flavor = ManagementQualifierFlavors.DisableOverride)]
    public class LetterPhonetic
    {
        [ManagementReference(Type = "NumberLetter")]
        [ManagementKey]
        public string LetterNumber;

        [ManagementReference(Type = "NumberPhonetic")]
        [ManagementKey]
        public string PhoneticNumber;

        [ManagementEnumerator]
        static public IEnumerable EnumerateInstances()
        {
            ArrayList insts = new ArrayList();
            for (int i = 1; i < 3; i++)
            {
                LetterPhonetic inst = new LetterPhonetic();
                inst.LetterNumber = "Letter = " + i;
                inst.PhoneticNumber = "Phonetic = " + i;
                insts.Add(inst);
            }
            return insts;
        }

    }

}

설명

다음 예제와 같이 이 특성을 사용하여 연결 클래스를 만들 수 있습니다.

생성자

Name Description
ManagementReferenceAttribute()

ManagementReferenceAttribute 클래스의 새 인스턴스를 초기화합니다. 매개 변수가 없는 생성자입니다.

속성

Name Description
Type

참조된 형식의 이름을 가져오거나 설정합니다.

TypeId

파생 클래스에서 구현되는 경우 이 Attribute대한 고유 식별자를 가져옵니다.

(다음에서 상속됨 Attribute)

메서드

Name Description
Equals(Object)

이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다.

(다음에서 상속됨 Attribute)
GetHashCode()

이 인스턴스의 해시 코드를 반환합니다.

(다음에서 상속됨 Attribute)
GetType()

현재 인스턴스의 Type 가져옵니다.

(다음에서 상속됨 Object)
IsDefaultAttribute()

파생 클래스에서 재정의되는 경우 이 인스턴스의 값이 파생 클래스의 기본값인지 여부를 나타냅니다.

(다음에서 상속됨 Attribute)
Match(Object)

파생 클래스에서 재정의되는 경우 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다.

(다음에서 상속됨 Attribute)
MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

Name Description
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다.

(다음에서 상속됨 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다.

(다음에서 상속됨 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1).

(다음에서 상속됨 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

개체에 의해 노출되는 속성 및 메서드에 대한 액세스를 제공합니다.

(다음에서 상속됨 Attribute)

적용 대상