• ベストアンサー

C# using の有効範囲

プログラムの改良中、 using IWshRuntimeLibrary; をソースの一番上に追加したところ、今まで正常に動いていた部分に以下のエラーが出るようになりました。 「Fileは System.IO.File と IWshRuntimeLibrary.File の間のあいまいな参照です」 追加した名前空間が必要な部分だけに using IWshRuntimeLibrary; が有効になるようにするにはどのように記載すればよいのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.5

対策として思いつくのはusingエイリアスを使って、名前空間名を短縮する方法でしょうか。 using IW=IWshRuntimeLibrary; とすると、IWshRuntimeLibrary.FileにIW.Fileでアクセスできます。

usatan2
質問者

お礼

回答ありがとうございます。 少しは見やすくなりました。ありがとうございます。 ちなみに、 using IW=IWshRuntimeLibrary; を使用するメソッドの中に記載したら エラー 1 構文エラーです。'(' が必要です。 で怒られました。 先頭にいれるのですね。勉強になりました。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.4

それぞれ使うメソッドが別なら、partial classを使ってファイル自体を分けてしまえば行けそうな気がします。 まぁスマートとは言い難いですが……

usatan2
質問者

お礼

回答ありがとうございます。 ファイルを分けるというのも一案ですね。 参考にさせていただきます。

すると、全ての回答が全文表示されます。
  • ONEONE
  • ベストアンサー率48% (279/575)
回答No.3

usingの影響は直下の名前空間だと思いますので、その部分だけ名前空間を分けて書く、ぐらいしか思いつきませんがいかんせんスマートではありませんね。 私では力不足のようですので、他の方に回答をお任せします。

usatan2
質問者

お礼

名前空間を分けるアイデア、ありがとうございます。 参考にさせていただきます。

すると、全ての回答が全文表示されます。
  • tt515jp
  • ベストアンサー率50% (1/2)
回答No.2

System.IO.File と IWshRuntimeLibrary.File のどちらが多く使用されているかによりますが、 IWshRuntimeLibrary.File の方が少ないのであれば、 using IWshRuntimeLibrary; の行を削除し、 IWshRuntimeLibrary.File を使用している箇所の File を、 IWshRuntimeLibrary.File にしてください。

usatan2
質問者

お礼

回答ありがとうございます。 お教えくださった対処法、実は実施中です。 今回の質問は、 using IWshRuntimeLibrary; が及ぼす範囲を制限するような記述方法 についてです。 よろしくお願いいたします。

すると、全ての回答が全文表示されます。
  • ONEONE
  • ベストアンサー率48% (279/575)
回答No.1

C#初めて間もない素人ですが回答させて頂きます。 そういう場合は、Fileがどちらに属しているかSystem.IO.File か IWshRuntimeLibrary.File と明確に記述し分ければよいと思います。

usatan2
質問者

お礼

回答ありがとうございます。 実は、IWshRuntimeLibraryを使う部分は、7行ほどだけなので、 先頭のusing IWshRuntimeLibrary;をコメントアウトして、 その7行ほどの部分を IWshRuntimeLibrary.IWshShortcut_Class shortcut; shortcut = (IWshRuntimeLibrary.IWshShortcut_Class)TheShell.CreateShortcut( filename ); のように、毎回「IWshRuntimeLibrary」を追加して対処して動いています。 ちなみに、IWshRuntimeLibrary.File は一箇所も使っていません。 もっとスマートな美しい解決策が無いのかなと思い、質問しました。 よろしくお願いいたします。

すると、全ての回答が全文表示されます。

関連するQ&A