Given:
case class Foo(a: Int, b: String, c: Double)
you can say:
val params = Foo(1, \"bar\", 3.14).productIterator.toList
You could use pattern matching like:
params match { case List(x:Int, y:String, d:Double) => Foo(x,y,d) }