|
using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Management;
using System.Text;
using System.Windows.Forms;
namespace Harlinn.CIMTool.Types
{
[TypeConverter(typeof(ExpandableObjectConverter))]
public class ManagementObjectCollectionWrapper : BindingListEx<ManagementBaseObjectWrapper>, IObjectWrapper, IDisposable
{
ManagementObjectCollection innerObject;
public ManagementObjectCollectionWrapper(ManagementObjectCollection theObject)
{
innerObject = theObject;
Initialize();
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
if (innerObject != null)
{
innerObject.Dispose();
innerObject = null;
}
}
}
~ManagementObjectCollectionWrapper()
{
Dispose(false);
}
object IObjectWrapper.InnerObject
{
get
{
return innerObject;
}
}
public void Initialize()
{
try
{
var enumerator = innerObject.GetEnumerator();
using (enumerator)
{
int exceptionCount = 0;
while (enumerator.MoveNext())
{
try
{
ManagementBaseObject current = enumerator.Current;
if (current != null)
{
if (current is ManagementClass)
{
ManagementClass managementClass = (ManagementClass)current;
Add(new ManagementClassWrapper(managementClass));
}
else if (current is ManagementObject)
{
ManagementObject managementObject = (ManagementObject)current;
Add(new ManagementObjectWrapper(managementObject));
}
else
{
Add(new ManagementBaseObjectWrapper(current));
}
}
}
catch (Exception)
{
exceptionCount++;
if (exceptionCount > 10)
{
return;
}
}
}
}
}
catch (Exception)
{ }
}
public override PropertyDescriptorCollection GetItemProperties(PropertyDescriptor[] listAccessors)
{
PropertyDescriptorCollection pdc = null;
if (listAccessors != null && listAccessors.Length > 0)
{
pdc = ListBindingHelper.GetListItemProperties(listAccessors[0].PropertyType);
}
else
{
if (Count > 0)
{
ManagementBaseObjectWrapper obj = this[0];
pdc = obj.GetProperties();
}
else
{
pdc = base.GetItemProperties(listAccessors);
}
}
return pdc;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Chief Architect - Sea Surveillance AS.
Specializing in integrated operations and high performance computing solutions.
I’ve been fooling around with computers since the early eighties, I’ve even done work on CP/M and MP/M.
Wrote my first “real” program on a BBC micro model B based on a series in a magazine at that time. It was fun and I got hooked on this thing called programming ...
A few Highlights:
- High performance application server development
- Model Driven Architecture and Code generators
- Real-Time Distributed Solutions
- C, C++, C#, Java, TSQL, PL/SQL, Delphi, ActionScript, Perl, Rexx
- Microsoft SQL Server, Oracle RDBMS, IBM DB2, PostGreSQL
- AMQP, Apache qpid, RabbitMQ, Microsoft Message Queuing, IBM WebSphereMQ, Oracle TuxidoMQ
- Oracle WebLogic, IBM WebSphere
- Corba, COM, DCE, WCF
- AspenTech InfoPlus.21(IP21), OsiSoft PI
More information about what I do for a living can be found at:
harlinn.com or
LinkedIn
You can contact me at
espen@harlinn.no