Во время разрешения виндзорских зависимостей у меня есть следующее исключение:
Не удалось разрешить необязательную зависимость для 'Namespace.MyClass1' (Namespace.MyClass1).
Параметр 'Namespace.MyClass2' тип 'Namespace.MyClass2'
public class MyClass1
{
public MyClass1(MyClass2 myClass2, MyClass3 myClass3)
{
this.MyClass2 = myClass2,
this.MyClass3 = myClass3,
}
protected MyClass2 MyClass2 { get; private set; }
public MyClass3 MyClass3 { get; set; }
}
Нет проблем с разрешением MyClass2 и MyClass3.
** Edit - контрольный пример **
Я использую Windsor 2.5.1 (или 2.5.2 - скачал сегодня через NuGet)
Весь код:
using Castle.MicroKernel.Registration;
using Castle.Windsor;
using Castle.Windsor.Configuration.Interpreters;
using Castle.Core.Resource;
namespace ConsoleApplication9
{
class Program
{
static void Main(string[] args)
{
WindsorContainer container = new WindsorContainer(new XmlInterpreter(new ConfigResource()));
container.Register(
Component.For<MyClass2>(),
Component.For<MyClass1>()
.DependsOn(
Property.ForKey("myClass2").Is<MyClass2>(),
Property.ForKey("myClass3").Is<MyClass3>()
)
);
container.Resolve<MyClass1>();
}
}
public class MyClass3 { public MyClass3() {} }
public class MyClass2 { public MyClass2() {} }
public class MyClass1
{
public MyClass1(MyClass2 myClass2, MyClass3 myClass3)
{
this.MyClass2 = myClass2;
this.MyClass3 = myClass3;
}
protected MyClass2 MyClass2 { get; private set; }
public MyClass3 MyClass3 { get; set; }
}
}
App.config:
<castle>
<properties>
</properties>
<include uri="file://windsor.config" />
</castle>
windsor.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<components>
<component id="hoho" type="ConsoleApplication9.MyClass3"/>
</components>
</configuration>