Поддерживает ли Ninject Func (автоматически сгенерированный завод)?

Autofac автоматически создает фабрики для Func ; Я могу даже передавать параметры.

 public class MyClass { public MyClass(Func a, Func b) { var _a = a(); var _b = b(1); } } 

Могу ли я сделать то же самое с Ninject? Если нет, какое обходное решение можно применить?

Благодарю.

Обновление :

Просто нашел этот пост, кажется, что ответ отрицательный:

Как обрабатывать classы со статическими методами с помощью Ninject?

NB Ninject 3.0 и более поздние версии полностью поддерживаются с Ninject.Extensions.Factory пакета Ninject.Extensions.Factory , см. Ninject.Extensions.Factory : – https://github.com/ninject/ninject.extensions.factory/wiki


EDIT: NB существует реализация Bind().ToFactory() в Ninject 2.3 (которая не полностью тестирует поддерживаемый выпуск, но доступна с сервера CodeBetter )

На данный момент Ninject не поддерживает это. Мы планировали добавить это в следующую версию. Но поддержку можно легко добавить, настроив соответствующую привязку. Просто загрузите модуль ниже и наслаждайтесь.

 public class FuncModule : NinjectModule { public override void Load() { this.Kernel.Bind(typeof(Func<>)).ToMethod(CreateFunc).When(VerifyFactoryFunction); } private static bool VerifyFactoryFunction(IRequest request) { var genericArguments = request.Service.GetGenericArguments(); if (genericArguments.Count() != 1) { return false; } var instanceType = genericArguments.Single(); return request.ParentContext.Kernel.CanResolve(new Request(genericArguments[0], null, new IParameter[0], null, false, true)) || TypeIsSelfBindable(instanceType); } private static object CreateFunc(IContext ctx) { var functionFactoryType = typeof(FunctionFactory<>).MakeGenericType(ctx.GenericArguments); var ctor = functionFactoryType.GetConstructors().Single(); var functionFactory = ctor.Invoke(new object[] { ctx.Kernel }); return functionFactoryType.GetMethod("Create").Invoke(functionFactory, new object[0]); } private static bool TypeIsSelfBindable(Type service) { return !service.IsInterface && !service.IsAbstract && !service.IsValueType && service != typeof(string) && !service.ContainsGenericParameters; } public class FunctionFactory { private readonly IKernel kernel; public FunctionFactory(IKernel kernel) { this.kernel = kernel; } public Func Create() { return () => this.kernel.Get(); } } } 
  • Как я могу сортировать несколько массивов на основе отсортированного порядка другого массива
  • Могу ли я сделать функцию доступной в каждом controllerе в угловом?
  • Как изменить реализацию (обход) функции, объявленной извне
  • Как сделать .lib-файл, когда есть .dll-файл и заголовочный файл
  • Функция триггера jquery, когда элемент находится в viewport
  • Как округлить до ближайшего 0,5?
  • Возвращаемый массив в функции
  • Функция возвращает None без оператора return
  • Синтаксис функции C, типы параметров, объявленные после списка параметров
  • Зачем использовать именованные функциональные выражения?
  • Функция с тем же именем, но другая подпись в производном classе
  • Давайте будем гением компьютера.