2017-07-05 9 views
0

私はかなり新しいNancyです。私が達成しようとしているのは、NancyModuleクラスを継承する基底クラスNancyBaseModuleを作成することです。このクラスは "共通のもの"を担当することになっています。拡張メソッドや静的メソッドでこの種の機能を隠す代わりに、このようにしたいと思います。ナンシー、モジュールがロードされていません

私が直面している問題は、単純なGETメソッドを登録するために、この基本クラスに機能を追加することによって、この登録メソッドのFuncがWebブラウザなどでアクセスしようとしたときに呼び出されないということです。実際、クラスのコンストラクタは呼び出されません。コンストラクタで少なくともHTTPメソッドに登録する必要があると私は思っています。私が "ダミー"パスを追加すればわかるように、それはすべて動作します。

これが私の基本クラスがどのように見えるかです:

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

、私はこれがあればかなりわからないんだけどフレームワークの背後にある設計思想の観点から正しいアプローチを取ること。誰かが私が達成しようとしていることを理解している場合は、私は正しい方向に私を指差してください。

答えて

0

私は通常の登録で固執します。私はメソッドをオーバーライドするのは複雑です。私はbase classにルートを登録しないと、ルートの衝突を引き起こす可能性があります。あなたのベースモジュール。

関連する問題