首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Castle Windsor StartableFacility未启动

Castle Windsor StartableFacility未启动
EN

Stack Overflow用户
提问于 2012-11-22 23:50:56
回答 3查看 843关注 0票数 0

我遵循了中给出的示例(侵略性旧模式):

http://docs.castleproject.org/Default.aspx?Page=Startable-Facility&NS=Windsor&AspxAutoDetectCookieSupport=1

下面是我的完整源代码:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;
using Castle.Facilities.Startable;
using Castle.MicroKernel;
using Castle.MicroKernel.Registration;

namespace Test
{
    public interface IStartable
    {
        void Start();
        void Stop();
    }

    public class Startable : IStartable
    {
        public Startable()
        {
            Console.WriteLine("Created!");
        }

        public void Start()
        {
            Console.WriteLine("Started!");
        }

        public void Stop()
        {
            Console.WriteLine("Stopped!");
        }
    }

    [TestFixture]
    public class StartableFacilityContainerTest
    {

        [Test]
        public void TestOperation()
        {
            IKernel container = new DefaultKernel();

            container.AddFacility<StartableFacility>();

            container.Register(Component.For<Startable>());
            Console.WriteLine("Registered!");

            container.Dispose();
            Console.WriteLine("Released!");
        }
    }
}

然而,当我运行它时,我得到:

代码语言:javascript
复制
Registered!
Released!

当我期望得到时(如示例中所示):

代码语言:javascript
复制
Created!
Started!
Registered!
Stopped!
Released!

基本上我的Startable没有启动。

这在.Net 4.0和Castle Windsor 3.0中进行了测试

我做错什么了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-23 00:02:32

试一试

代码语言:javascript
复制
container.Register(Component.For<Startable>()
     .StartUsingMethod(s => s.Start)
     .StopUsingMethod(s => s.Stop);
票数 0
EN

Stack Overflow用户

发布于 2014-04-29 22:35:11

我使用的是安装程序。这对我很有帮助:

代码语言:javascript
复制
container.AddFacility<StartableFacility>(f => f.DeferredTryStart());
票数 4
EN

Stack Overflow用户

发布于 2017-02-08 22:16:40

问题是您已经创建并实现了自己的IStartable接口,而不仅仅是实现了Castle.Core.IStartable

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13516218

复制
相关文章

相似问题

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