首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Castle Windsor,如何以编程方式模拟参数xml语法

Castle Windsor,如何以编程方式模拟参数xml语法
EN

Stack Overflow用户
提问于 2010-10-05 21:34:03
回答 1查看 2K关注 0票数 1

给定Castle Windsor的这个遗留XML配置:

代码语言:javascript
复制
 <parameters>
    <AdditionalMessage>#{message}</AdditionalMessage>
    <Files>#{files}</Files>
    <downloaders>
      <array>
        <item>${HttpFileDownloader}</item>
        <item>${HttpsFileDownloader}</item>
        <item>${FtpFileDownloader}</item>
        <item>${FileSystemFileDownloader}</item>
      </array>
    </downloaders>
    <?if DEBUG?>
    <scraper>${BenchmarkingTitleScraperDecorator}</scraper>
    <?else?>
    <scraper>${RegexTitleScraper}</scraper>
    <?end?>   </parameters>

如何使用IWindsorInstaller做到这一点呢?到目前为止我有这个,不确定我是否在正确的轨道上:

代码语言:javascript
复制
   container.Register(Component
                .For<HtmlTitleRetriever>()
                .Named("HtmlTitleRetriever")
                .DependsOn(Property.ForKey("AdditionalMessage").Eq("#{message}"))
                .DependsOn(Property.ForKey("Files").Eq("#{files}"))
                .DependsOn(Property.ForKey("Files").Eq("#{files}"))
                 .DependsOn(Property.ForKey("downloaders").Is<IFileDownloader>())
                );
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-06 00:46:07

代码语言:javascript
复制
    public class ContainerInstaller : IWindsorInstaller
    {
        public void Install(IWindsorContainer container, Castle.MicroKernel.SubSystems.Configuration.IConfigurationStore store)
        {

            //scrapers
            container.Register(Component.For<ITitleScraper>().ImplementedBy<StringParsingTitleScraper>().Named("StringParsingTitleScraper"));
            container.Register(Component.For<ITitleScraper>().ImplementedBy<RegexTitleScraper>().Named("RegexTitleScraper"));


            //list of downloaders
            container.Kernel.Resolver.AddSubResolver(new ListResolver(container.Kernel));
            container.Register(Component.For<IFileDownloader>().ImplementedBy<HttpFileDownloader>().Named("HttpFileDownloader"));
            container.Register(Component.For<IFileDownloader>().ImplementedBy<FtpFileDownloader>().Named("FtpFileDownloader"));
            container.Register(Component.For<IFileDownloader>().ImplementedBy<FileSystemFileDownloader>().Named("FileSystemFileDownloader"));

            //register concrete management class
            container.Register(Component
                .For<HtmlTitleRetriever>()
                .Named("HtmlTitleRetriever")
                .DependsOn(Property.ForKey("AdditionalMessage").Eq("message"))
#if (DEBUG)
                .DependsOn(Property.ForKey("scraper").Is("BenchmarkingTitleScraperDecorator"))
#else
                .DependsOn(Property.ForKey("scraper").Is("StringParsingTitleScraper"))
#endif
            );

            //now load the stuff that we want to configure from xml
            container.Install(Configuration.FromAppConfig());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3864101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档