さまざまな種類の ConcurrentQueues を処理する柔軟な方法を構築しようとしています。これは、キューを処理するほとんどのロジックが同じであるためです。
次のようになります。
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 は正しいタイプのようですが、次のメッセージが表示されます。
問題は、私がこれを行うとうまく動作するということです:
private void DoWork(dynamic queue,object objectType)
{
TestData outResult;// hardcoded type
while(queue.TryDequeue(out outResult))
{
//do something
}
}
型のハードコーディングを回避する方法はありますか? 私が作成しているメソッドに多くの柔軟性を与えてくれます。
敬具、
マティス