Nancy,未加载模块

时间:2017-07-05 18:19:29

标签: c# nancy

我对Nancy还不熟悉。我想要实现的是创建一个继承自NancyBaseModule类的基类NancyModule。本课程应该负责“常见的东西”。我想这样做,而不是在扩展方法或静态方法中隐藏这种功能。

我面临的问题是,通过向此基类添加功能,为了注册简单的GET方法,在尝试访问此方法时,将永远不会调用此注册方法的Func例如,网络浏览器。事实上,类的构造函数从未被调用,这使我认为我需要至少在构造函数中注册HTTP方法。正如您所看到的,如果我添加“虚拟”路径,它将全部起作用。

这就是我的Base类的样子:

public abstract class NancyBaseModule : NancyModule
{
        public NancyBaseModule(string prefix) : base(prefix)
        {
            //Get("/dummy", p =>
            //{
            //    return "Nothing interesting here, Cowboy.";
            //});

            var configurator = new NancyEndpointConfigurator()
            {
                RegisterWithReturnValue = (path, action) =>
                {
                    Get(path, action);
                }
            };

            RegisterEndpoints(configurator);
        }

        public abstract void RegisterEndpoints(INancyEndpointConfigurator configurator);
    } 

我的派生类:

  public class AckService : NancyBaseModule
    {
        public AckService() : base("AckService")
        {
        }

        public override void RegisterEndpoints(INancyEndpointConfigurator configurator)
        {
            configurator.WithReturnValue("/now", p =>
            {
                return $"Greetings. The time is: {DateTime.Now.ToString()}";
            });
        }
    }

由于我缺乏使用Nancy的知识,我不太确定这是否是采用框架背后的设计思想的正确方法。如果有人理解我想要实现的目标,请向我指出正确的方向。

1 个答案:

答案 0 :(得分:0)

我会坚持使用正常的注册Get(path,Func<>)语法,我无法对覆盖方法的复杂性有任何好处。我也不会在base class中注册路由,因为这会导致路由冲突,只有常用功能应该在您的基本模块中。