gpt4 book ai didi

orchardcms - 在 Orchard 模块中使用 IBlogService(或任何其他服务)

转载 作者:行者123 更新时间:2023-12-03 11:26:14 24 4
gpt4 key购买 nike

我正在尝试创建一个 Controller ,用于从博客中检索某些博文。我想检索前 20 个帖子和评分最高的 20 个帖子。

为此,我创建了一个 Controller 来检索此信息。在深入了解标准 Orchard 博客模块后,我发现我需要 IBlogService 或 IBlogPostService。我可以看到这些被注入(inject)到 BlogPostController 中,如下所示:

public BlogPostController(
IOrchardServices services,
IBlogService blogService,
IBlogPostService blogPostService,
IFeedManager feedManager,
IShapeFactory shapeFactory)

但是这些服务是如何连线/连接/注入(inject)的?我找不到调用构造函数的那段代码,也找不到我在 StructureMap 中习惯使用的一些接线。

我可以只在构造函数中添加 Iservices 吗,Orchard 会确保我有正确的对象,还是我需要先做些什么?

目前我的类(class)看起来像这样(默认):

public class FrontpageController : Controller
{
public IOrchardServices Services { get; set; }

public FrontpageController(IOrchardServices services)
{
Services = services;
T = NullLocalizer.Instance;
}

public Localizer T { get; set; }

[HttpGet]
public ActionResult Index()
{
//Do something to get blogposts

throw new NotImplementedException();
}
}

最佳答案

Orchard 通过控制反转使用依赖注入(inject),使用名为 AutoFac 的库.听起来像一口,但事实并非如此。本质上,您在构造函数的参数中指定所需的服务,AutoFac 会自动解析它们并使用实现您指定接口(interface)的类实例调用构造函数。

您已经将 IOrchardServices 注入(inject)到您的 Controller 中,因此您可以对实现 IDependency 的任何其他类/接口(interface)执行相同的操作。 (IBlogPostServiceIBlogService 都继承自IDependency)

要对博客服务做同样的事情,您可以执行以下操作:

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();
}
}

然后在您的 Index 方法中,您可以开始使用 _blogs_posts 来执行与博客相关的操作。

关于orchardcms - 在 Orchard 模块中使用 IBlogService(或任何其他服务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9931819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com