0

嗨,我第一次使用 Castle 项目,在控制台应用程序中向容器注册组件时遇到问题。以下是 castle.config 文件:

<configuration>
  <configSections>
    <section name="castle"
        type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler, Castle.Windsor" />
  </configSections>
  <castle>
    <components>
      <component id="messageSender"
               type="CastleTest.SecretMessageSender, CastleTest">
        <parameters>SecretMessageSender
          <from>rahul.ragarwal@patni.com</from>
          <encoder>${encoder.null}</encoder>
        </parameters>
      </component>

      <component id="encoder.silly"
                service="CastleTest.IEncoder, CastleTest"
                type="CastleTest.SillyEncoder, CastleTest" />

      <component id="encoder.null"
                service="CastleTest.IEncoder, CastleTest"
                type="CastleTest.NullEncoder, CastleTest" />

    </components>
  </castle>

</configuration>

以下是我尝试注册组件的主类:

namespace CastleTest
{
    class testNewCastle
    {
        static void Main(string[] args)
        {
            IWindsorContainer container = new WindsorContainer();

            **Tried various methods to register components here**

            SecretMessageSender sender = container.Resolve<SecretMessageSender>("messageSender");

            sender.SendMessage("Rahul", "Testing using Castle!");
            Console.Read();
        }
    }
}

以下是 SecretMessageSender 类:

namespace CastleTest
{
    public interface IEncoder
    {
        string Encode(string source);
    }

    public class SecretMessageSender
    {
        private readonly IEncoder _encoder;
        private readonly string _from;

        public SecretMessageSender(string from, IEncoder encoder)
        {
            _from = from;
            _encoder = encoder;
        }

        public void SendMessage(string to, string body)
        {
            Console.WriteLine("to: {0}\r\nfrom: {1}\r\n\r\n{2}", to, _from, _encoder.Encode(body));
        }
    }
}

请帮助我运行此代码。

谢谢。

4

1 回答 1

1
container.Install(Configuration.FromAppConfig());

有关安装程序的文档中的更多信息。

于 2010-09-29T12:49:43.100 回答