So, I got sources for 3.2.0 version. Add simple console application and check different versions with debugging.
Here is working solution:
<component id="Service.Main"
type="ConsoleApplication1.TestClass"
lifestyle="transient">
<parameters>
<foo>foo string</foo>
<Test>
<parameters type="ConsoleApplication1.Test`1[[System.String, mscorlib]], ConsoleApplication1">
<Param>param string</Param>
<OtherParam>sdgsdfgdf</OtherParam>
</parameters>
</Test>
</parameters>
</component>
Important notes:
- We should use for subsequent complex properties, otherwise it can't "see" all list of parameters. It get only first child: ConfigurationParametersInspector.cs, line 58
- We should explicitly set the type of parameter that represented by property with interface type. We can expect that type attribute should be used for <Test> node but in fact, only child XML nodes passed to the method that choose type for property.
- If we do not provide type attribute, we fail with ConverterException: DefaultComplexConverter.cs, line 83
- Here we we get <parameters> with type attribute (and loose parent node attributes, so if we set type for <Test> it will be lost: ConfigurationParametersInspector.cs, line 59
- And here is the method that chose interface implementation depending on type attribute: DefaultComplexConverter.cs, line 75
Anyway configuration checked with 3.2.0 and it works.