Description
The entry points for certain components are incorrectly designed. Normally components for entry-points are instantiated and their parameters are set on the object directly. For some reason, a handful of components slipped through, by having a separate "arguments" object be set, rather than have the arguments on the object directly.
The most conspicuous example of this flaw is the text loader.
machinelearning/src/Microsoft.ML/CSharpApi.cs
Line 1481 in 9f3076d
As we see in its usage here, we have the peculiar setup that we instantiate this, only to turn around and set a completely different object for its settings, which is completely wrong. Those parameters ought to be on the object itself.
machinelearning/test/Microsoft.ML.TestFramework/ModelHelper.cs
Lines 61 to 65 in 11d5ba7
This extends beyond text loader. As near as I can tell, all classes in CSharpApi.cs
with the suffix "argument" in its name is an example of this anti-pattern.