XElements をナビゲートするために Axis プロパティを使用しているクラスがあります。その際、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 を除いてまったく同じです。そのため、基本クラスに名前空間をインポートしても機能しません。サブクラスに名前空間をインポートすると、すべての関数とサブを複製する必要があります。