Not too put too fine a point on it, but that looks like some seriously overcomplicated code, probably designed by someone with a less than solid understanding of how object references work. (hopefully not you :) - and in any case I don't mean to be insulting)
If I were designing this FillBusinessObject() method, I'd make it work like this:
CableEC newCable = CableEC.NewCableEC();
Utils.BOFiller.FillBusinessObject(newCable, arrRows, true);
lstCables.add(newCable);
When using an object reference (and newCable is an object reference) you don't need the ref keyword. And why have FillBusinessObject() return an object? It seems like it should clearly be filling the object I passed into it (newCable). Finally, .NET will automatically cast anything to type object, you shouldn't have to manually do a cast like that - certainly not for a scenario as simple as this.
Of course none of that explains why your whole list is getting changed by FillBusinessObject(), but my first assumption is that your FillBusinessObject() method is somehow doing a bad thing.
Copyright (c) Marimer LLC