📄 catalog.cs
字号:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Web.Configuration;
///<summary>
///Catalog类
/// 提供静态函数访问产品和分类。作为一个抽象层在Web page和实际的数据提供者之间
///</summary>
public static class Catalog
{
private static bool _isInitialized = false;
private static CatalogProvider _provider;
private static SmallBusinessDataProvidersSection _providersSection;
///<summary>
/// 只读属性,返回指定的数据提供者
///</summary>
public static CatalogProvider Provider
{
get
{
Initialize();
return _provider;
}
}
///<summary>
///根据指定的分类ID返回产品集合。
///</summary>
public static List<Item> GetChildItems(string categoryId)
{
return Provider.GetChildItems(categoryId);
}
///<summary>
/// 根据指定的父分类返回子分类集合。
///</summary>
public static List<Category> GetChildCategories(string parentCategoryId)
{
return Provider.GetChildCategories(parentCategoryId);
}
///<summary>
/// 根据指定的itemId返回产品项
///</summary>
public static Item GetItem(string itemId)
{
return Provider.GetItem(itemId);
}
/// <summary>
/// 基于web.config配置文件,初始化具体的数据提供者,如果指定的提供者不能被
/// 实例化,则抛出一个InvalidOperationException异常。
/// </summary>
private static void Initialize()
{
//_isInitialized内部使用,如果提供者己经被实例化,就不用再次实例化。这
//样可以防止实例化一个提供者多次。
if (!_isInitialized)
{
_providersSection = (ConfigurationManager.GetSection("SmallBusinessDataProviders")) as SmallBusinessDataProvidersSection;
if (_providersSection == null)
{
throw new InvalidOperationException(Messages.ItemConfigNotFound);
}
//调用ProviderHelper.Instantiateprovider类实例化相应的提供者对象。
_provider = ProvidersHelper.InstantiateProvider(_providersSection.CatalogProviders[_providersSection.CatalogProviderName],
typeof(CatalogProvider)) as CatalogProvider;
//如果不能实例化相应的提供者,则抛出InvalidOperationException异常。
if (_provider == null)
{
throw new InvalidOperationException(Messages.ItemProviderInstantiationError);
}
_isInitialized = true;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -