Jim*_*mbo 2 c# generics generic-method
我有下面的通用方法,如果它工作,它将服务于它的目的!但是items.Add(new T(mo));部分不会编译因为我使用构造函数.有人可以帮忙吗?
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;
}
Run Code Online (Sandbox Code Playgroud)
该where T : new()语法只允许无参数的构造函数.有一些黑客可以做到这一点,否则Activator.CreateInstance应该工作.但是,优选的方法是可访问的Init(arg)方法,可能通过接口(也指定通过where).所以你可以使用:
var newObj = new T();
newObj.Init(mo);
items.Add(newObj);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
343 次 |
| 最近记录: |