Разрешение Виндзорской зависимости - PullRequest
0 голосов
/ 10 февраля 2011

Во время разрешения виндзорских зависимостей у меня есть следующее исключение:

Не удалось разрешить необязательную зависимость для '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>
...