.NETCore3で起こったエラー“名前空間ですが種類のように使用されています”の対処法
こんにちは!見習いIOTエンジニアのめぐみです。
今回の記事ではASP.NET Core3の勉強中に遭遇したnamespaceに関するエラーとその対処法を記載していきます。
同じようなエラーから抜け出せない方の助けになれば幸いです。
まず、【エラー内容】はこちら↓
CS0118:'Temperature'は名前空間ですが、種類のように使用されています
実際の画面がこちらです
OnGetAsyncメソッドで使いたいTemperature型のリストの宣言に赤線が引かれ、上記のようなエラー内容が表示されています。
.NETCoreの記事があまりないのか、私のようなエラーにはまる方が少ないのか、記事を検索してもなかなか対処法が見つかりませんでした。
原因としては、コード上の"namespace DBChart_Razor.Pages.Temperature"(つまりソリューションの"Pages"中のフォルダ名)と
私がclassとして定義した"Models"の中の"Temperature"の名前が同じだったこと。
Temperature型として認識される前に、名前空間(namespace)として捉えられてしまったようです。
それなら名前空間となるフォルダ名を変えれば・・・!?
ということで以下のように修正しました。
フォルダ名を"Temp"に変え、コードも"namespace DBChart_Razor.Pages.Temp"に変更すると、エラーは消えました。
今回のようにnamespaceとなるフォルダ名とclass名がかち合ってしまった時は、コード上のnamespace部分だけ変えても良いのですが、
.NETCore3ではフォルダ名から自動的にnamespaceを記載してくれるので、やはり初めからフォルダ名をclass名とかぶらないようにつけるのが得策ではないかと学んだ1日でした!