プログラミングとかブログ

Unity/C#/SRPGStudio/RPGツクールMVの情報とかその他気になったことを調べて書きます。

VisualStudioでクラスがどこの名前空間にあるのか確かめる方法

適当なサイトからコードをコピペしてきたときに、「型または名前空間名 'xxxx' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。」というエラーが出るときがあります。
クラス名(または名前空間)は合っていても、属する名前空間が記述されていないとこうなります。
記述すれば直せるのですが、そのためにどの名前空間を記述すればいいのかがわからないときがあります。

それを探すために有効なのがVisualStudioのオブジェクトブラウザーです。
VS2013Communityの場合「表示>オブジェクトブラウザー」(ctrl+Alt+J)で開きます。

f:id:shirakamisauto:20150629134818p:plain
f:id:shirakamisauto:20150629134832p:plain

実際に使ってみましょう。
以下のコードを見てください。

using System;

    public class PiyoPiyo
    {
        public void Hoge()
        {
            var ra = new RequiredAttribute();
            var cva = new CustomValidationAttribute(typeof(int), "v");
        }
    }

これだと参照が不足しているため、RequiredAttributeクラスとCustomValidationAttributeクラスでエラーが出ます。
直そうとしても、これらがどの名前空間に属するのかわからない状態です。
そこで、CustomValidationで検索してみると、System.ComponentModel.DataAnnotations.CustomValidationAttributeクラスがヒットします。
f:id:shirakamisauto:20150629134842p:plain

今度はRequiredで検索してみると、いろいろ出ますが、System.ComponentModel.DataAnnotations.RequiredAttributeクラスが目当てのものですね。
f:id:shirakamisauto:20150629134850p:plain

結局、System.ComponentModel.DataAnnotations名前空間が足りなかったとわかりました。
あとはこれをusingに記述すればオッケーです。
どの名前空間やクラスにあるのかわからないときはオブジェクトブラウザーを使いましょう。

ちなみに、当たり前ですが、NuGetにあるやつや外部DLLなどのクラスの場合は、参照につっこまなければ表示されません。
その場合は素直にググりましょう。
もしくはオブジェクトブラウザーの検索対象を「マイソリューション」ではなく、「すべてのコンポーネント」にすると出てくることもあるかもです。