从配置文件中读取自定义扩展类的模式
在.net应用程序中,经常会看到配置文件中有类似如下的定义 type="MyClass, DllFile" ,我们在使用.net remoting的时候就会遇到。其实自己也可以这样来用的,前提条件是你的应用程序需要有很好的扩展性的时候。
这里要说的就是自己要实现扩展类的一种模式。大家看定义:
public interface Ixxxxxx
{
void Init(XmlNode configNode);
..
}
{
void Init(XmlNode configNode);
..
}
首先要定义如上的抽象接口,接口中一定要一个Init,其他的按自己需要而定。
装入类的时候代码如下:
void LoadConfig(.)
{
XmlNode node = (XmlNode)ConfigurationSettings.GetConfig("MySection");
if( node == null )
_instance = new MyDefaultIxxxxxx();
else
{
_instance = Activator.CreateInstance(Type.GetType(node["type"].InnerText));
_instance.Init(node);
}
}
{
XmlNode node = (XmlNode)ConfigurationSettings.GetConfig("MySection");
if( node == null )
_instance = new MyDefaultIxxxxxx();
else
{
_instance = Activator.CreateInstance(Type.GetType(node["type"].InnerText));
_instance.Init(node);
}
}
基本的思路就是通过反射生成一个实例,然后用 Init 进行未完成的初始化。
简单吧!可是我们为什么不能第一个想出来呢?