Orchardcms 在Orchard模块中使用IBlogService(或任何其他服务)
我试图创建一个控制器,从博客中检索某些博客文章。 我想检索排名前20的帖子&排名前20的帖子 为此,我创建了一个控制器,它将检索此信息。在深入研究了标准的Orchard博客模块之后,我发现我需要IBlogService或IBlogPostService。 我可以看到这些被注入BlogPostController,如下所示:Orchardcms 在Orchard模块中使用IBlogService(或任何其他服务),orchardcms,Orchardcms,我试图创建一个控制器,从博客中检索某些博客文章。 我想检索排名前20的帖子&排名前20的帖子 为此,我创建了一个控制器,它将检索此信息。在深入研究了标准的Orchard博客模块之后,我发现我需要IBlogService或IBlogPostService。 我可以看到这些被注入BlogPostController,如下所示: public BlogPostController( IOrchardServices services, IBlogSer
public BlogPostController(
IOrchardServices services,
IBlogService blogService,
IBlogPostService blogPostService,
IFeedManager feedManager,
IShapeFactory shapeFactory)
但这些服务是如何连接/注入的?我找不到调用构造函数的代码段,也找不到StructureMap中常用的一些连接
我可以只在构造函数中添加iSeries设备,然后Orchard会确保我得到了正确的对象,或者我需要在之前做些什么吗
目前,我的类看起来是这样的(默认):
Orchard使用一个名为。听起来像一口,但实际上不是。本质上,您可以在构造函数的参数中指定所需的服务,AutoFac会自动解析这些服务,并使用实现指定接口的类的实例调用构造函数 您已经将
IOrchardServices
注入控制器,因此您可以对实现IDependency
的任何其他类/接口执行相同的操作。(IBlogPostService
和IBlogService
都继承自IDependency
)
要对blogs服务执行相同的操作,则可以执行以下操作:
public class FrontpageController : Controller
{
public IOrchardServices Services { get; set; }
private readonly IBlogService _blogs;
private readonly IBlogPostService _posts;
public FrontpageController(IOrchardServices services, IBlogService blogs, IBlogPostService posts)
{
Services = services;
T = NullLocalizer.Instance;
_posts = posts;
_blogs = blogs;
}
public Localizer T { get; set; }
[HttpGet]
public ActionResult Index()
{
//Do something to get blogposts
throw new NotImplementedException();
}
}
然后在您的
索引
方法中,您可以开始使用\u blogs
和\u posts
执行与blog相关的操作。谢谢!我已经怀疑类似的问题,但在解决方案中找不到任何接线/设置类/文件。我会试试这个!不用担心:)我建议阅读一些AutoFac文档或使用AutoFac编写一些东西,因为我发现它确实帮助我了解了所有的IoC内容。此外,您还应该将Orchard.blog声明为您将此接口注入的任何功能的依赖项,否则,在启用/禁用功能时,您可能会陷入混乱。依赖项可以在module.txt文件中声明。
public class FrontpageController : Controller
{
public IOrchardServices Services { get; set; }
private readonly IBlogService _blogs;
private readonly IBlogPostService _posts;
public FrontpageController(IOrchardServices services, IBlogService blogs, IBlogPostService posts)
{
Services = services;
T = NullLocalizer.Instance;
_posts = posts;
_blogs = blogs;
}
public Localizer T { get; set; }
[HttpGet]
public ActionResult Index()
{
//Do something to get blogposts
throw new NotImplementedException();
}
}