a) There can be all kinds of usages for an Initialize method. The most typical one is when the exposed type is a wrapper. The wrapped object constructor is then called in the Initialize method.
b) A map is a possible solution. Another option is to return a class that holds the different values.