1

さまざまな種類の 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
        }
    }

型のハードコーディングを回避する方法はありますか? 私が作成しているメソッドに多くの柔軟性を与えてくれます。

敬具、

マティス

4

1 に答える 1