有时我们在使用.net框架里面的某个类时,可能会出现某个类中没有我们想要的方法,那就可以给这些类自定义一些扩展方法,方便我们的使用,而不需要重复创建一个类或者对象。另外在开发中要是一个底层类已经封装好了,如果需要扩展而去重新去该类中修改内容应该也会很麻烦的,所以扩展方法是很方便。
自定义扩展方法
昨天在写代码的时候我需要将XmlDocument对象转换为XDocument对象,但是这两个类没有提供互相转化的方法,所以这就可以使用扩展方法为这两个类添加互相转换的方法,代码如下:
public static class XmlExtensions
{
public static XmlDocument ToXmlDocument(this XDocument xDocument)
{
var xmlDocument = new XmlDocument();
using (var xmlReader = xDocument.CreateReader())
{
xmlDocument.Load(xmlReader);
}
return xmlDocument;
}
public static XDocument ToXDocument(this XmlDocument xmlDocument)
{
//对XmlNode 中的 XML 数据进行快速、非缓存的只进访问
using (var nodeReader = new XmlNodeReader(xmlDocument))
{
//跳过非内容节点
nodeReader.MoveToContent();
return XDocument.Load(nodeReader);
}
}
}
这里创建了XmlExtensions静态类,在该类中创建了两个静态方法,分别是ToXmlDocument和ToXDocument,注意ToXmlDocument方法中参数中this XDocument 表示为XDocument创建的一个扩展方法,参数是 XDocument对象。同理ToXDocument方法类似。这里必须都是静态方法。