【发布时间】:2013-09-07 18:01:12
【问题描述】:
我正在尝试构建一种灵活的方法来处理不同类型的并发队列,因为处理队列的大多数逻辑都是相同的。
看起来有点像这样:
private void StartDoWorkButton(object sender, EventArgs e)
{
StartDoWork();
}
private ConcurrentQueue<TestData> myQueue = new ConcurrentQueue<TestData>();
private void StartDoWork()
{
DoWork(myQueue, new TestData());
}
private void DoWork(dynamic queue,object objectType)
{
dynamic outResult = Activator.CreateInstance(objectType.GetType());
while(queue.TryDequeue(out outResult))
{
//do something
}
}
outResult 似乎是正确的类型,但我收到以下消息:“'System.Collections.Concurrent.ConcurrentQueue.TryDequeue(out WinformWith10pxNewProject1.TestData)' 的最佳重载方法匹配有一些无效参数”
事情是,当我这样做时它工作正常:
private void DoWork(dynamic queue,object objectType)
{
TestData outResult;// hardcoded type
while(queue.TryDequeue(out outResult))
{
//do something
}
}
有什么方法可以解决类型的硬编码问题吗?将为我正在创建的方法提供很大的灵活性。
亲切的问候,
马蒂斯
【问题讨论】:
-
您不应该为此使用动态。在这里查看更多信息:stackoverflow.com/questions/2674906/…
标签: c# dynamic deque createinstance concurrent-queue