Что происходит (из того, что я вижу), так это то, что свойство ticks неправильно идентифицируется как обязательный параметр (потому что оно принадлежит конструктору с наименьшим числом аргументов), даже если все типы значений имеют параметр по умолчанию без параметров конструктор.
Однако кандидат на конструктор, соответствующий большинству параметров, все равно будет выбран, даже если вы предоставите дополнительные параметры (т. Е. Тики), чтобы обойти это, просто включив тики в список параметров:
<component id="timeInForce"" type="System.TimeSpan, mscorlib">
<parameters>
<ticks>0</ticks>
<hours>0</hours>
<minutes>15</minutes>
<seconds>0</seconds>
</parameters>
</component>
Вот краткий тест, чтобы убедиться, что он работает (который подходит против ствола замка):
string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
<castle>
<components>
<component id=""timeInForce"" type=""System.TimeSpan, mscorlib"">
<parameters>
<ticks>0</ticks>
<hours>0</hours>
<minutes>15</minutes>
<seconds>0</seconds>
</parameters>
</component>
</components>
</castle>";
WindsorContainer container = new WindsorContainer(
new XmlInterpreter(new StaticContentResource(xml)));
TimeSpan span = container.Resolve<TimeSpan>("timeInForce");
Assert.AreEqual(new TimeSpan(0, 15, 0), span);
Однако, вместо того, чтобы использовать ваш подход, я бы предложил реализовать собственный преобразователь типов, как описано в документации к замку .
Таким образом, вы можете разработать свою собственную сокращенную форму для временного промежутка, например, «15 м» или «2 ч 15 м», или что угодно, что вам захочется - сделать вашу конфигурацию немного проще для чтения и обслуживания, а также для решения проблем, с которыми вы столкнулись в настоящее время.