Я пытаюсь создать гибкий метод обработки различных типов ConcurrentQueues, потому что большинство логики для обработки очереди одинаковы.concurrentQueue tryDequeue с неизвестным результатом
Это выглядит как это:
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 (из WinformWith10pxNewProject1.TestData)»имеет некоторые недопустимые аргументы»
Дело в том, что хорошо работает, когда я делаю это:
private void DoWork(dynamic queue,object objectType)
{
TestData outResult;// hardcoded type
while(queue.TryDequeue(out outResult))
{
//do something
}
}
есть ли способ, что я могу приста k вокруг жесткого кодирования типа? Это даст мне большую гибкость для методов, которые я создаю.
С наилучшими пожеланиями,
Matthijs
Вы не должны использовать динамику для этого. Смотрите здесь для получения дополнительной информации: http://stackoverflow.com/questions/2674906/when-should-one-use-dynamic-keyword-in-c-sharp-4-0 –