Я не знаю, имеет ли название смысл, но в приложении, которое я пишу, есть множество (расширяющих) методов. Простой пример:
Объекты:
Matter (Burn, Explode, Destroy, Freeze, Heat, Cool)
Atom (Attach, Detach)
<many more>
И пользовательская коллекция, например:
ImmutableList<T>
И такие методы:
public static class Burner
{
public static Matter Burn ( this Matter matter )
{
// matter is burning ...
}
}
var matters = new ImmutableList<Matter>();
matters.Burn();
Как видите, Burn работает с одной сущностью, но по-прежнему отображается в ImmutableList. Таким образом, я хочу сам управлять распараллеливанием (параллельным прожигом).
Как мне сделать это наиболее производительным, или самым чистым, или наиболее удобным для обслуживания способом, или комбинированным способом?
Во-первых, я бы предпочел не определять еще один метод расширения, который принимает ImmutableList внутри каждого класса (Burner и т. д.), потому что таких сотни и сотни, и они, вероятно, будут выглядеть одинаково. Но я открыт для идей.
Также весь код мой, поэтому я могу изменить/добавить что угодно в любой части кода, а не только в методах расширения.