dポイントプレゼントキャンペーン実施中!

プログラムの改良中、
using IWshRuntimeLibrary;
をソースの一番上に追加したところ、今まで正常に動いていた部分に以下のエラーが出るようになりました。
「Fileは System.IO.File と IWshRuntimeLibrary.File の間のあいまいな参照です」

追加した名前空間が必要な部分だけに
using IWshRuntimeLibrary;
が有効になるようにするにはどのように記載すればよいのでしょうか?
よろしくお願いします。

A 回答 (5件)

対策として思いつくのはusingエイリアスを使って、名前空間名を短縮する方法でしょうか。


using IW=IWshRuntimeLibrary;
とすると、IWshRuntimeLibrary.FileにIW.Fileでアクセスできます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
少しは見やすくなりました。ありがとうございます。
ちなみに、
using IW=IWshRuntimeLibrary;
を使用するメソッドの中に記載したら

エラー1構文エラーです。'(' が必要です。

で怒られました。
先頭にいれるのですね。勉強になりました。

お礼日時:2012/02/18 18:01

それぞれ使うメソッドが別なら、partial classを使ってファイル自体を分けてしまえば行けそうな気がします。


まぁスマートとは言い難いですが……
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/02/18 18:02

usingの影響は直下の名前空間だと思いますので、その部分だけ名前空間を分けて書く、ぐらいしか思いつきませんがいかんせんスマートではありませんね。



私では力不足のようですので、他の方に回答をお任せします。
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/02/19 09:22

System.IO.File と IWshRuntimeLibrary.File のどちらが多く使用されているかによりますが、


IWshRuntimeLibrary.File の方が少ないのであれば、

using IWshRuntimeLibrary;

の行を削除し、

IWshRuntimeLibrary.File を使用している箇所の File を、
IWshRuntimeLibrary.File にしてください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お教えくださった対処法、実は実施中です。

今回の質問は、
using IWshRuntimeLibrary;
が及ぼす範囲を制限するような記述方法
についてです。
よろしくお願いいたします。

お礼日時:2012/02/16 10:46

C#初めて間もない素人ですが回答させて頂きます。



そういう場合は、Fileがどちらに属しているかSystem.IO.File か IWshRuntimeLibrary.File と明確に記述し分ければよいと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

実は、IWshRuntimeLibraryを使う部分は、7行ほどだけなので、
先頭のusing IWshRuntimeLibrary;をコメントアウトして、
その7行ほどの部分を

IWshRuntimeLibrary.IWshShortcut_Class shortcut;
shortcut = (IWshRuntimeLibrary.IWshShortcut_Class)TheShell.CreateShortcut( filename );

のように、毎回「IWshRuntimeLibrary」を追加して対処して動いています。
ちなみに、IWshRuntimeLibrary.File は一箇所も使っていません。

もっとスマートな美しい解決策が無いのかなと思い、質問しました。
よろしくお願いいたします。

お礼日時:2012/02/16 10:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!