我有一个使用轴属性来导航 XElements 的类。为此,我使用了 import 语句来导入 xml 命名空间。我想使用同一个类来处理不同版本的 xml 文件,它们的命名空间有不同的 URI,但前缀相同。
如果是 1.0 版,那么
imports <xmlns:name1="urn:company:name1:1.0">
imports <xmlns:name2="urn:company:name2:1.0">
imports <xmlns:gml="http://www.opengis.net/gml/3.2">
如果是 2.0 版,那么
imports xmlns:name1="urn:company:name1:2.0"
imports <xmlns:name2="urn:company:name2:2.0">
imports <xmlns:gml="http://www.opengis.net/gml/3.2">
public class myObject
public Function GetElements(byval inXElement as XElement) as IEnumerable(of XElement)
dim IXElement = from myElement in inXElement...<name1:ElementName> select myElement
return IXElement
end function
end class
我确信这可以通过为从基类继承的每个版本创建不同的对象来实现,但希望能够更快一些并且需要更少的代码重复。除了与前缀关联的 URI 之外,子类的许多功能和子类将完全相同。所以在基类中导入命名空间是行不通的。如果我在子类中导入命名空间,那么我必须复制所有函数和子类。