对provider的一点学习笔记,怕以后忘了记下来便于以后学习:
示例:
有一个MessageModel实体类,对它的操作有Insert()和Get()方法,持久化数据在SqlServer数据库中或Xml文件里。根据配置文件中的配置来决定数据持久化方案是使用SqlServer数据库还是Xml文件。
还有一个message的API 还有一个继承与ProviderBase的操作Message的抽象类 其包括两个子类来实现Message的持久化SqlMessageProvider XmlMessageProvider
剩下两个是Message的Provider的集合类:MessageProviderCollection,和Message的Provider的配置类:MessageProviderConfigurationSession
其执行过程是用Message的API(Message类)执行Insert和Get方法,在实例化类Message时先调其构造函数,执行Initialize初始化,其操作用语句 messageConfig = (MessageProviderConfigurationSection)ConfigurationManager.GetSection("MessageProvider")
;找到配置文件中的“MEssageProvider”节点,然后利用 类ProvidersHelper中的InstantiateProviders函数调用InstantiateProvider函数执行每一个配置文件中Provider的Initialize ProviderBase provider = Activator.CreateInstance(settingsType) as ProviderBase;
provider.Initialize(providerSettings.Name, providerSettings.Parameters);
从而使每个配置文件中的Provider获取配置文件的Connection
然后我们就可以跟据Provider的默认设置来返回具体的Providers