Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将数据服务绑定到Ninject中的另一个服务类?_C#_Nhibernate_Lambda_Ninject.web.mvc - Fatal编程技术网

C# 如何将数据服务绑定到Ninject中的另一个服务类?

C# 如何将数据服务绑定到Ninject中的另一个服务类?,c#,nhibernate,lambda,ninject.web.mvc,C#,Nhibernate,Lambda,Ninject.web.mvc,我正在为我的网站创建一个视图,其中显示产品的所有信息。我想创建一个“Details”服务类,它处理我的大部分查询。 我将会话绑定到GeneralWebApplicationDataInjectModule中的数据: Bind<IContentService>().To<ContentService>().InRequestScope(); Bind<ISession>() .ToMethod(

我正在为我的网站创建一个视图,其中显示产品的所有信息。我想创建一个“Details”服务类,它处理我的大部分查询。 我将会话绑定到GeneralWebApplicationDataInjectModule中的数据:

Bind<IContentService>().To<ContentService>().InRequestScope();
        Bind<ISession>()
            .ToMethod(
                context =>
                    context.Kernel.Get<IMasterSessionSource>()
                        .ExposeConfiguration()
                        .BuildSessionFactory()
                        .OpenSession()
            )
            .WhenInjectedInto<IContentService>()
            .InRequestScope();
因此,我创建了一个新的服务类,试图使用ContentService获取详细信息:

public class DetailsService
{
    private static IContentService _contentService;

    public DetailsService(IContentService contentService)
    {
        _contentService = contentService;
    }


    public static IEnumerable<Programs> ProgramsFind()
    {
        var results =
            _contentService
                .Programs
                .Where(
                    d => d.TypeId >= 16 || d.TypeId <= 18);

        return results;
    }

是的,这就是答案

  • 创建服务
  • 将会话绑定到服务
  • 将服务添加到控制器
  • 必要时打电话给服务部
  • 和往常一样,只是一些被忽视的事情

    public class ProgramController : Controller
    {
        private static IContentService _contentService;
    
        public ProgramController (IContentService contentService)
        {
            _contentService = contentService;
        }
    
    
    public ActionResult Details(string item)
        {
            var ProgramDetails = DetailsService.ProgramsFind();
    //this is where i want to use the service class to pull data in DetailsService.
    
            var model = new DetailPageViewModel
            {
                ProgramTables = GetUpComingCourses(),
            };
    
            return View("../Shared/DetailView", model);
        }
    
    public class DetailsService
    {
        private static IContentService _contentService;
    
        public DetailsService(IContentService contentService)
        {
            _contentService = contentService;
        }
    
    
        public static IEnumerable<Programs> ProgramsFind()
        {
            var results =
                _contentService
                    .Programs
                    .Where(
                        d => d.TypeId >= 16 || d.TypeId <= 18);
    
            return results;
        }
    
        Bind<IContentService>().To<DetailsService>().InRequestScope();
    
     private static IContentService _contentService;
     // new
    private static IDetailsService _detailsService;
    
        public MobileController(IContentService contentService, IDetailsService detailsService)
        {
            _contentService = contentService;
            //new
            _detailsService = detailsService;
        }