从SmartCoder里提取出来的代码:反射加载代码片断
过滤器有很多个备选,动态选择。
private IFilter getFilter(string filterName) { Type o = Type.GetType(filterName);//加载类型 IFilter filter = (IFilter)Activator.CreateInstance(o, true); return filter; }
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="FilterSetting" type="TemplateEngine.FilterSettingSection, TemplateEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" allowDefinition="Everywhere" allowExeDefinition="MachineToApplication" restartOnExternalChanges="true" /> </configSections> <FilterSetting default="DefaultFilter"> <Filters> <clear /> <add name="DefaultFilter" type="TemplateEngine.Filter.DefaultFilter,TemplateEngine,Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/> <add name="Filter1" type="TemplateEngine.DefaultFilter,Test" /> <add name="Filter2" type="Test.Filter2,Test" /> <add name="Filter3" type="Test.Filter3,Test" /> <add name="Filter4" type="Test.Filter4,Test" /> </Filters> </FilterSetting> </configuration>