温莎城堡注册组件问题

发布于 2024-09-25 12:45:47 字数 2334 浏览 1 评论 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>[email protected]</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));
        }
    }
}

请帮助我运行此代码。

谢谢。

Hi
I've been using Castle project for the first time and facing a problem in registering a component with the container in a console application.
Following is the castle.config file:

<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>[email protected]</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>

Following is main class where I'm trying to register my component:

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();
        }
    }
}

Following is SecretMessageSender class:

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));
        }
    }
}

Please help me in running this code.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

酒废 2024-10-02 12:45:47
container.Install(Configuration.FromAppConfig());

更多信息请参见有关安装程序的文档

container.Install(Configuration.FromAppConfig());

More information in the docs about installers.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文