Передайте аргумент времени выполнения от контроллера к конкретному классу домена для выполнения хранимой процедуры, используя ninject

Здравствуйте, я пытаюсь безуспешно передать аргумент времени выполнения от контроллера к конкретному классу, используя ninject 3

Хранимая процедура в классе контекста базы данных, которая вызывается из конкретного класса, нуждается в аргументе ProductGroupId.

 public class ProductDetailController : Controller
{

    private IProductDetailRepository productDetailRepository;

    public static Guid _ProductGroupId
    {
        get; set;   
    }


    public ProductDetailController(IProductDetailRepository productDetailRepository)
    {
        this.productDetailRepository = productDetailRepository;
    }


    public RedirectToRouteResult ProceedToProductDetailView(Guid ProductGroupId, string returnUrl)
    {
        _ProductGroupId = ProductGroupId;



        return RedirectToAction("Index", new { returnUrl });
    }
}

Как вы можете видеть, ProductGroupId передается в контроллер и затем устанавливается в свойстве.

Затем класс NinjectDependancyResolver.cs получает аргумент, необходимый конкретному классу.

 private void AddBindings()
    {

        kernel.Bind<IProductRepository>().To<EFProductRepository>();


        kernel.Bind<IProductDetailRepository>().To<EFProductDetailRepository>()
                                            .WhenInjectedInto<ProductDetailController>()
                                            .WithConstructorArgument("ProductGroupId", ProductDetailController._ProductGroupId);
    }

Конкретный класс EFProductDetailRepository.cs готов вызвать класс контекста базы данных для запуска хранимой процедуры, но при вызове контекста ему необходим ProductGroupId из контроллера. Я добавил это значение в привязку ninject, как мне получить к нему доступ, чтобы оно могло быть передано в класс контекста из конкретного класса?

 public class EFProductDetailRepository : IProductDetailRepository
{

    EFDbContext context = new EFDbContext();

    public IEnumerable<ProductDetail> ProductDetail
    {

        // context.getProductDetailsFromSP()  needs ProductGroupId from the controller/ninject binding!

        get { return context.getProductDetailsFromSP(); }
    }
}

0 ответов

Другие вопросы по тегам