Приложение NancyFx F # с параметром - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь перевести этот пример с C # на F #

public class MyModule : NancyModule
{
    private IMyDependency _dependency;

    public MyModule(IMyDependency dependency)
    {
        _dependency = dependency;

        Get["/"] = x =>
        {
        };

        // Register other routes
    }
}

(источник 1 )

Однако добавление параметра в конструктор

  type HelloModule(dependency) as self = 
    inherit NancyModule()
    do
      self.Get.["/"] <- fun _ -> "Hello" :> obj

(источник 2 )

приводит к исключению времени выполнения: System.InvalidOperationException: «Что-то пошло не так при попытке удовлетворить одну из зависимостей во время компоновки ...

Как правильно добавить в код такую ​​зависимость, как источник данных?Или, вообще, как мне передать что-то извне HelloModule внутрь?

1 Ответ

0 голосов
/ 31 мая 2018

Я предполагаю, что это может быть вызвано не указанием типа параметра dependency конструктора в вашем коде F #.Это приведет к тому, что компилятор F # назначит этому параметру тип generic , а затем инфраструктура внедрения зависимостей Нэнси не будет знать, что вводить.

Попробуйте выполнить следующее и посмотрите, решит ли это вашу проблему:

type HelloModule(dependency : IMyDependency) as self = 
  inherit NancyModule()
  do
    self.Get.["/"] <- fun _ -> "Hello" :> obj

PS Естественно, чтобы это работало, вам также понадобится какой-то тип, который реализует интерфейс IMyDependency, и он сообщил платформе Nancy об этом типе.Из этой части документации Nancy , на которую вы ссылались, похоже, достаточно просто объявить тип, но если этого на самом деле недостаточно, вам придется зарегистрировать тип вручную.Я не достаточно знаком с Нэнси, чтобы давать вам конкретные советы, помимо того, что написано в документации.

...