Uniónézet-osztály létrehozása
Az egyesítő nézetosztályok a forrásosztálypéldányok logikai egyesítését használják. Az egyesítő nézetosztályok a forrásosztályok összes példányát tartalmazzák, hacsak nem korlátozza a példányokat egy WHERE záradékkal a forrás lekérdezésben.
Az egyesítő nézetosztályok akkor hasznosak, ha hasonló vagy azonos osztálypéldányokat szeretne látni, amelyek különböző névterekben vagy különböző számítógépeken találhatók. Létrehozhat például egy egyesítő osztályt, amely különböző figyelendő lemezmeghajtók példányait tartalmazza.
Az egyesítő nézetosztály tulajdonságait olyan tulajdonságokra is alapozhatja, amelyek nem szerepelnek az összes forrásosztálypéldányban. Ha a forrásosztálypéldányok nem rendelkeznek ugyanazzal a tulajdonsággal, az egyesítőosztály-példányok tulajdonságainak értéke NULL. Ha például egy merevlemez hőmérsékleti tulajdonsággal rendelkezik, de a másik nem, akkor is létrehozhat egy egyesítést a kettő között.
Az alábbi eljárás azt ismerteti, hogyan hozhat létre egyesítő nézetosztályt.
Egyesítő nézetosztály létrehozása
Kezdje el az osztálydefiníciót az Union karakterlánc-minősítővel.
A JoinOn, a Associationés a Union minősítők egymással kölcsönösen kizáróak.
Hozza létre a nézetosztályban használt forrásosztályokat meghatározó lekérdezéseket a ViewSources minősítővel.
Adja meg azon névterek nevét és helyét, amelyekben a forrásosztályok a ViewSpaces minősítővel találhatók.
Adja meg a forrásosztályok tulajdonságaira leképezendő tulajdonságokat a PropertySources minősítővel.
Ha szükséges, a HiddenDefault minősítő használatával megjelölheti bármelyik tulajdonságot egy forrásosztályhoz tartozóként.
Határozza meg az egyesítő nézetosztály forrásosztályainak fő tulajdonságait.
Minden forrásosztálynak azonos számú kulcstulajdonsággal kell rendelkeznie, amelyek megfelelnek a(z) CIMType. Emellett az egyesítő nézetosztály kulcsainak egyedileg kell azonosítaniuk az összes forráspéldányt. Bizonyos esetekben előfordulhat, hogy meg kell adnia a rendszertulajdonságokat, hogy a példányok egyediek legyenek. Ha például két különböző névtér két azonos osztályának egyesítő nézetéből hoz létre nézetet, a nézetosztály kulcsaként a __Namespace tulajdonságot is belefoglalhatja a nézetosztályba a két példány megkülönböztetése érdekében. Ha két hasonló osztályt használ ugyanabból a névtérből egy nézet létrehozásához, a __Class tulajdonság használatával megkülönböztetheti a kettőt. Nevezze át a nézetben lévő rendszertulajdonságokat, hogy elkerülje a nézetosztály rendszertulajdonságaival való ütközést.
Definiálja a használni kívánt metódusokat a MethodSource minősítővel.
A többi nézetosztálytól eltérően létrehozhat módszereket az egyesítő nézet módosításához.
Az alábbi példakód egy egyesítő nézetosztályt mutat be.
[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;
};