Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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# Orchard CMS:以编程方式获取自定义内容部件的元素_C#_Asp.net_Razor_Orchardcms - Fatal编程技术网

C# Orchard CMS:以编程方式获取自定义内容部件的元素

C# Orchard CMS:以编程方式获取自定义内容部件的元素,c#,asp.net,razor,orchardcms,C#,Asp.net,Razor,Orchardcms,我正在为Orchard CMS-viewer小部件创建自定义ContentType元素的模块 因此,我有服务接口: public interface IReviewGrabber : IDependency { IEnumerable<ReviewPart> Reviews { get; } } 在DefaultContentManager.cs中 怎么了?谢谢大家! 对于初学者来说,在构造函数中执行查询是一个很大的禁忌。构造函数应该只做一些琐碎的工作,比如初始化变量,而

我正在为Orchard CMS-viewer小部件创建自定义ContentType元素的模块

因此,我有服务接口:

public interface IReviewGrabber : IDependency 
{
    IEnumerable<ReviewPart> Reviews { get; }
}
DefaultContentManager.cs中


怎么了?谢谢大家!

对于初学者来说,在构造函数中执行查询是一个很大的禁忌。构造函数应该只做一些琐碎的工作,比如初始化变量,而不是查询数据库

类似地,属性获取程序通常不应该做很多工作。您应该使用GetReviews方法,根据需要进行查询。如有必要,可以稍后添加缓存

public class ReviewGrabber : IReviewGrabber
{
    readonly IOrchardServices _orchardServices;
    readonly IEnumerable<ReviewPart> _reviews;

    public ReviewGrabber(IOrchardServices orchardServices)
    {
        _orchardServices = orchardServices;
        var temp = _orchardServices.ContentManager.Query<ReviewPart, ReviewRecord>();
        _reviews = temp.List();
    }

    public IEnumerable<ReviewPart> Reviews
    {
        get { return _reviews; }
    }
}
public class ReviewHandler : ContentHandler
{
    public ReviewHandler(IRepository<ReviewRecord> repository)
    {
        Filters.Add(StorageFilter.For(repository));
    }
}
public IEnumerable<IContentHandler> Handlers {
     get { return _handlers.Value; }
}