开发者

The type arguments for method 'x' cannot be inferred from the usage using Parallel.ForEach

I am trying out the "where T :" construct for the first time and am getting an error when trying to use Parallel.ForEach.

"The type arguments for method 'System.Threading.Tasks.Parallel.ForEach(System.Collections.Concurrent.OrderablePartitioner, System.Action)' cannot be inferred from the usage."

I understand why the error is occuring but not how to fix it. Data is a simple class with only 2 properties.

namespace Test
{
  internal class UnOrderedBuffer<T> where T : 开发者_如何学Pythonclass
    {

        ConcurrentBag<T> GenericBag = new ConcurrentBag<T>();
    }
}


namespace Test
{
    internal class Tester
    {

     private UnOrderedBuffer<Data> TestBuffer;


     public void Update()
    {

    Parallel.ForEach(TestBuffer, Item =>
            {
                //do stuff
            });
    }

    }
}


The first argument of Parallel.ForEach should be an IEnumerable<T>, a Partitioner<T> or something similar. Your UnOrderedBuffer class isn't convertible to any of the parameter types involved. If you make it implement IEnumerable<T> or something similar, then it'll work.

This isn't really about the type arguments or the generic constraints - it's about your class not implementing the right interfaces or extending an appropriate class.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜