Skapa en Union View-klass
En unionsvyklass är en logisk union av källklassinstanser. En unionsvyklass innehåller alla instanser av källklasserna om du inte begränsar instanserna genom att inkludera en WHERE-sats i källfrågan.
Unionsvyklasser är användbara när du vill se instanser av liknande eller identiska klasser som finns i olika namnområden eller på olika datorer. Du kan till exempel skapa en union-klass som innehåller instanser av olika diskenheter att övervaka.
Du kan också basera egenskaperna för en unionsvyklass på egenskaper som inte finns i alla källklassinstanser. Om källklassinstanserna inte har samma egenskap har egenskaperna för unionsklassinstanser värdet NULL-. Om en hårddisk till exempel har en temperatur egenskapen men en annan inte gör det, kan du fortfarande skapa en union mellan de två.
Följande procedur beskriver hur du skapar en unionsvyklass.
Så här skapar du en unionsvyklass
Börja klassdefinitionen med strängkvalificeraren Union.
JoinOn, Associationoch Union-kval är ömsesidigt uteslutande.
Skapa de frågor som definierar källklasser som används i vyklassen med ViewSources-kvalificerare.
Definiera namnen och platsen för namnrymderna där källklasserna finns med ViewSpaces-kvalificerare.
Definiera de egenskaper som mappas till egenskaperna i källklasserna och som har kvalificeraren PropertySources.
Om det behövs kan du tagga någon av egenskaperna som tillhör en källklass med hjälp av HiddenDefault-kvalificerare.
Definiera de viktigaste egenskaperna för källklasserna för din unionsvyklass.
Varje källklass måste ha samma antal nyckelegenskaper som matchas av CIMType-. Dessutom måste nycklarna för din unionsvyklass unikt identifiera alla källinstanser. I vissa fall kan du behöva ange systemegenskaper för att säkerställa att instanserna är unika. Om du till exempel skapar en vy från en union av två identiska klasser i två olika namnområden kan du inkludera egenskapen __Namespace som en nyckel i vyklassen för att skilja mellan de två instanserna. Om du använder två liknande klasser från samma namnområde för att skapa en vy kan du använda egenskapen __Class för att skilja mellan de två. Byt namn på eventuella systemegenskaper i vyn så att du kan undvika en konflikt med systemegenskaperna för vyklassen.
Ange vilka metoder du vill använda med MethodSource-kvalificerare.
Till skillnad från andra vyklasser kan du skapa metoder för att ändra en unionsvy.
I följande kodexempel beskrivs en union view-klass.
[Union, ViewSources{"SELECT Description, DeviceID, __Namespace, FileSystem, FreeSpace, VolumeName FROM LocalDisk",
"SELECT Description, DeviceID, __Namespace, FileSystem, FreeSpace, VolumeName FROM RemoteDisk"},
ViewSpaces{"\\\\.\\Root\\LocalNamespace","\\\\.\\Root\\RemoteNamespace"},
dynamic: ToInstance, provider("MS_VIEW_INSTANCE_PROVIDER")]
class UnionOfDrives
{
[PropertySources{"Description", "Description"}] string des;
[PropertySources{"DeviceID", "DeviceID"}, key] String did;
[PropertySources{"__Namespace", "__Namespace"}, key] String KEYID;
[PropertySources{"FileSystem", "FileSystem"}] String fsystem ;
[PropertySources{"FreeSpace", "FreeSpace"}] uint64 fspace;
[PropertySources{"VolumeName", "VolumeName"}] String vname;
};