ManagementReferenceAttribute 類別

定義

ManagementReferenceAttribute 會將類別成員、屬性或方法參數標示為另一管理物件或類別的參考。

注意:WMI .NET 程式庫目前被視為最終狀態,針對影響這些程式庫的非安全性相關問題,不會提供進一步的開發、增強功能或更新。 MI API 應使用於所有新的開發。

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
屬性

範例

此範例示範如何使用 ManagementReferenceAttribute 屬性搭配 ManagementQualifierAttribute 使用 ,以建立連結兩個其他 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;  
        }  

    }  

}  

備註

您可以使用此屬性來建立關聯類別,如下列範例所示。

建構函式

ManagementReferenceAttribute()

初始化 ManagementReferenceAttribute 類別的新執行個體。 這是無參數建構函式。

屬性

Type

取得或設定參考之型別的名稱。

TypeId

在衍生類別中實作時,取得這個 Attribute 的唯一識別碼。

(繼承來源 Attribute)

方法

Equals(Object)

傳回值,這個值指出此執行個體是否與指定的物件相等。

(繼承來源 Attribute)
GetHashCode()

傳回這個執行個體的雜湊碼。

(繼承來源 Attribute)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
IsDefaultAttribute()

在衍生類別中覆寫時,表示這個執行個體的值是衍生類別的預設值。

(繼承來源 Attribute)
Match(Object)

在衍生類別中覆寫時,會傳回值,表示這個執行個體是否等於指定物件。

(繼承來源 Attribute)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

明確介面實作

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

將一組名稱對應至一組對應的分派識別項 (Dispatch Identifier)。

(繼承來源 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

擷取物件的類型資訊,可以用來取得介面的類型資訊。

(繼承來源 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

擷取物件提供的類型資訊介面數目 (0 或 1)。

(繼承來源 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

提供物件所公開的屬性和方法的存取權。

(繼承來源 Attribute)

適用於