【发布时间】:2011-03-09 09:41:01
【问题描述】:
我试图通过引入泛型来重构一些代码,但我被卡住了。我正在尝试创建 T 的新实例,但问题是,T 在构造函数中有一个委托参数。我的目标是这样的:
public delegate IOrders DoStuffDelegate();
public class GenericBoss<T> where T:Worker
{
public void DelegateWork()
{
T worker = Activator.CreateInstance(typeof(T), new[]{GiveOrders})
worker.Work();
}
public IOrders GiveOrders()
{
return new OrderFromTheBoss();
}
}
public class Worker
{
private readonly DoStuffDelegate _takeOrders;
public Worker(DoStuffDelegate takeOrders)
{
_takeOrders = takeOrders;
}
public void Work()
{
_takeOrders();
}
}
但是,这不起作用,因为在 [Activator] 中只允许 [object] 类型作为参数。我不允许更改构造函数,因此无法将委托移动到其他地方。
有没有出路,或者泛型不是这里的选择?
问候, 莫腾
【问题讨论】:
标签: c# .net generics delegates