0

我正在 Orchard 中实现一个自定义模块来跟踪每个内容项的视图数量。在我的处理程序中,我正在检查内容项的类型是否是默认的 Orchard“页面”类型,但现在它正在使用 Equals 函数和魔术字符串。这是我的代码:

public class ContentItemViewRecordHandler : ContentHandler
{
    private readonly IOrchardServices services;
    private readonly IRepository<ContentItemViewRecord> repository;

    public ContentItemViewRecordHandler(IOrchardServices services, IRepository<ContentItemViewRecord> repository)
    {
        this.services = services;
        this.repository = repository;

        OnGetDisplayShape<CommonPart>(RecordView);
    }

    private void RecordView(BuildDisplayContext context, CommonPart part)
    {
        var contentItemType = context.ContentItem.ContentType;

        // THIS IS THE IF STATEMENT IN QUESTION
        if (!contentItemType.Equals("Page", StringComparison.CurrentCultureIgnoreCase))
        {
            return;
        }

        var contentItemViewRecord = new ContentItemViewRecord
        {
            ContentItemRecordId = context.ContentItem.Id,
            Username = services.WorkContext.CurrentUser.UserName,
            HostAddress = services.WorkContext.HttpContext.Request.UserHostAddress,
            DateCreated = DateTime.UtcNow
        };

        repository.Create(contentItemViewRecord);
    }
}

任何人都知道是否有一种方法可以在没有魔术字符串的情况下确定内容项的类型?

4

1 回答 1

2

内容类型不是 .NET 类型。它们是仅在运行时存在的动态实体。因此,字符串可以很好地识别它们。

于 2012-11-13T23:38:23.690 回答