分類:[C#]
言語:VC#2005(.Net FrameWork2.0)
非常に基本的な事で恐縮です。
c#に限ったことではありませんが、
.netライブラリで提供されているクラスと同じ名前を使った場合に、
オブジェクトの参照順序の関係でコンパイルエラーが発生してしまいます。
この場合「global::クラス名」をつけてルートを明確にする事で解決できると思うのですが、
ユーザコンポーネント等を使った場合に出来る「デザイナで生成されたコード」の中のコードも
その対象になってしまう場合に、たとえばテキストをフォームに張り付ける毎に
global::を付けるのは面倒です。
例:
namespace AAA.System
{
public class Hoge
{
とした場合に、
デザイナで生成されたコード内
/// <summary>
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
/// </summary>
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
^^^^^^
オブジェクトの参照順序はAAAを最初に参照してしまうのでエラーが発生してしまいます。
this.textBox1 = new global::System.Windows.Forms.TextBox();
^^^^^^
これで解決すると思うのですが・・・・
Designer.cs内にいちいちglobalを付けなくていい方法は無いのでしょうか?
それとも、面倒臭いなら最初から名前をかぶらないように命名するのが筋なのでしょうか?
そもそも名前が被らないように階層構造になっているのだと思うのですが、
これでは、クラスライブラリの名前を全部把握しておかなければならない事になる?ので、
意味を為さないのではないかと矛盾を感じております。
(↑自分が矛盾しているのかもしれませんが(^^;)
大変ぶしつけな質問で恐縮ですが、
アドバイスありましたらよろしくお願いいたします。
|