Provider的管理程序,反射就用他,保证好处多多。

配置文件还带智能提示功能哦,跟web.config一样。很爽。。。。

 

首先配置下web.config告诉系统配置文件在哪里。

 

PageBase之ProviderFactory<appSettings>
PageBase之ProviderFactory    
<add key="ProviderSettingsPath" value="~/Config/ProviderSettings.config" />
PageBase之ProviderFactory    
<!--<add key="UserInfoProviderName" value="UserInfoProvider" />-->
PageBase之ProviderFactory
</appSettings>

 

然后做个xml的架构文件 ProviderSchema.xsd 就和上面设置的 ProviderSetting.config 放一起好了。

PageBase之ProviderFactory<?xml version="1.0" encoding="utf-8"?>
PageBase之ProviderFactory
<xs:schema id="ProviderSchema" elementFormDefault="qualified" xmlns="http://www.w3school.com.cn" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:NS="http://www.w3school.com.cn" targetNamespace="http://www.w3school.com.cn">
PageBase之ProviderFactory  
<xs:element name="ProviderCinfig">
PageBase之ProviderFactory    
<xs:complexType>
PageBase之ProviderFactory      
<xs:sequence minOccurs="0" maxOccurs="1">
PageBase之ProviderFactory        
<xs:element name="Providers">
PageBase之ProviderFactory          
<xs:complexType>
PageBase之ProviderFactory            
<xs:choice minOccurs="1" maxOccurs="unbounded">
PageBase之ProviderFactory              
<xs:element name="Provider">
PageBase之ProviderFactory                
<xs:complexType>
PageBase之ProviderFactory                  
<xs:sequence minOccurs="0">
PageBase之ProviderFactory                    
<xs:element name="Attributes">
PageBase之ProviderFactory                      
<xs:complexType>
PageBase之ProviderFactory                        
<xs:sequence minOccurs="1" maxOccurs="unbounded">
PageBase之ProviderFactory                          
<xs:element name="add">
PageBase之ProviderFactory                            
<xs:complexType>
PageBase之ProviderFactory                              
<xs:sequence />
PageBase之ProviderFactory                              
<xs:attribute name="key" type="xs:string" />
PageBase之ProviderFactory                              
<xs:attribute name="value" type="xs:string" />
PageBase之ProviderFactory                            
</xs:complexType>
PageBase之ProviderFactory                          
</xs:element>
PageBase之ProviderFactory                        
</xs:sequence>
PageBase之ProviderFactory                      
</xs:complexType>
PageBase之ProviderFactory                      
<xs:key name="AttributesKey1">
PageBase之ProviderFactory                        
<xs:selector xpath=".//NS:add" />
PageBase之ProviderFactory                        
<xs:field xpath="@key" />
PageBase之ProviderFactory                      
</xs:key>
PageBase之ProviderFactory                    
</xs:element>
PageBase之ProviderFactory                  
</xs:sequence>
PageBase之ProviderFactory                  
<xs:attribute name="providerName" type="xs:string" />
PageBase之ProviderFactory                  
<xs:attribute name="classType" type="xs:string" use="required" />
PageBase之ProviderFactory                  
<xs:attribute name="assemblyType" type="xs:string" use="required" />
PageBase之ProviderFactory                
</xs:complexType>
PageBase之ProviderFactory              
</xs:element>
PageBase之ProviderFactory            
</xs:choice>
PageBase之ProviderFactory          
</xs:complexType>
PageBase之ProviderFactory          
<xs:key name="ProvidersKey1">
PageBase之ProviderFactory            
<xs:selector xpath=".//NS:Provider" />
PageBase之ProviderFactory            
<xs:field xpath="@providerName" />
PageBase之ProviderFactory          
</xs:key>
PageBase之ProviderFactory        
</xs:element>
PageBase之ProviderFactory      
</xs:sequence>
PageBase之ProviderFactory    
</xs:complexType>
PageBase之ProviderFactory  
</xs:element>
PageBase之ProviderFactory
</xs:schema>

 

在做个 ProviderSetting.config 文件,用来存放要反射文件的配置。参数很明显,一看就知道。

顺便解释下每个provider可以带很多个参数哦。而且设置下面的provider都是智能提示的,原来写配置文件可以这么简单。

PageBase之ProviderFactory<?xml version="1.0" encoding="utf-8"?>
PageBase之ProviderFactory
<ProviderCinfig xmlns="http://www.w3school.com.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3school.com.cn ProviderSchema.xsd">
PageBase之ProviderFactory  
<Providers>
PageBase之ProviderFactory    
<Provider providerName="AuthorCacheProvider" assemblyType="CE.SqlString.SqlStringTest.Provider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0aadabd12e7a8989" classType="CE.SqlString.SqlStringTest.Provider.AuthorProvider">
PageBase之ProviderFactory      
<Attributes>
PageBase之ProviderFactory        
<add key="getString" value="ttcre2"/>
PageBase之ProviderFactory      
</Attributes>
PageBase之ProviderFactory    
</Provider>
PageBase之ProviderFactory    
<Provider providerName="AuthorDalProvider" classType="CE.SqlString.SqlStringTest.Dal.AuthorDal" assemblyType="CE.SqlString.SqlStringTest.Dal, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0aadabd12e7a8989" />
PageBase之ProviderFactory    
<Provider providerName="UserInfoProvider" classType="CE.Components.Base.Security.UserInfo" assemblyType="CE.Components.Base, Version=1.0.0.0, Culture=neutral, PublicKeyToken=209c90b915362a04" />
PageBase之ProviderFactory  
</Providers>
PageBase之ProviderFactory
</ProviderCinfig>

 

然后做个资源文件,存放架构信息。用来对配置文件(ProviderSettings.config)做验证。

就是把ProviderSchema.xsd的内容记到一个字符串下面待用。我是放到配置文件中去了。

 

 

好了,关键的ProviderFactory.cs文件,代码如下。

PageBase之ProviderFactoryusing System;
PageBase之ProviderFactory
using System.Collections.Generic;
PageBase之ProviderFactory
using System.Text;
PageBase之ProviderFactory
using System.Configuration;
PageBase之ProviderFactory
using System.Configuration.Provider;
PageBase之ProviderFactory
using System.Web.Configuration;
PageBase之ProviderFactory
using System.Web.Caching;
PageBase之ProviderFactory
using System.Web;
PageBase之ProviderFactory
using System.IO;
PageBase之ProviderFactory
using System.Xml;
PageBase之ProviderFactory
using System.Xml.Schema;
PageBase之ProviderFactory
using System.Xml.XPath;
PageBase之ProviderFactory
PageBase之ProviderFactory
using CE.Components.Base.Properties;
PageBase之ProviderFactory
PageBase之ProviderFactory
namespace CE.Components.Base

 

使用就非常简单了。做个基类UserInfoBase,继承System.Configuration.Provider.ProviderBase

然后要类UserInfo继承UserInfoBase

调用方法:

PageBase之ProviderFactoryProviderFactory.LoadProvider("配置文件中的那个名字"as UserInfoBase

 

调用参数的方法:

PageBase之ProviderFactorypublic override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
}

 

有个例子,可以参考http://www.cnblogs.com/ttcre2/archive/2008/07/28/1251481.html

相关文章:

  • 2021-06-03
  • 2021-12-05
  • 2021-08-23
  • 2021-11-11
  • 2021-11-07
  • 2021-06-30
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-08
  • 2022-12-23
  • 2022-12-23
  • 2021-07-30
  • 2021-11-27
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案