Reputation: 22964
I have the generic method below which would serve its purpose if it worked! But the items.Add(new T(mo));
part wont compile because im using a constructor. Can anyone help?
private List<T> Items<T>(string query) where T : new()
{
List<T> items = new List<T>();
ManagementObjectCollection moc = new ManagementObjectSearcher(query).Get();
foreach (ManagementObject mo in moc)
items.Add(new T(mo));
return items;
}
Upvotes: 2
Views: 352
Reputation: 1062600
The where T : new()
syntax only allows for parameterless constructors. There are some hacks to do this, else Activator.CreateInstance
should work. But a preferred approach would be an accessible Init(arg)
method, perhaps via an interface (also specified via where
). So you can use:
var newObj = new T();
newObj.Init(mo);
items.Add(newObj);
Upvotes: 8