kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

深い階層のOfficeオブジェクト

Visioからステンシル情報を抜き出して、別の形式に移行する…という処理を作っているのですが、C#で作り始めると、ちょっとぞっとしてしまいました。こんな感じ

  try {
    Documents oDocs = VisioApp.Open(FileName);
    foreach(Document oDoc in oDocuments) {
      try {
        Pages oPages = oDoc.Pages;
        foreach(Page oPage in oPages) {
          ....(略:たぶんあと3弾くらい続く)
(COMなので、当然IDisposebleじゃないですね。try〜catchに変更)

すべてのステンシルをパースしようと思うとこの階層が延々続くんですか?かなりイヤ…。もっとこうエレガントな解決方法ってないものだろうか。