';命名空间';而是像';键入';

本文关键字:键入 命名空间 | 更新日期: 2023-09-27 18:00:29

我的程序使用一个名为Time2的类。我已经将引用添加到TimeTest,但我一直得到错误'Time2' is a 'namespace' but is used like a 'type'

有人能告诉我这个错误是什么以及如何修复吗?

    namespace TimeTest
    {
      class TimeTest
      {
        static void Main(string[] args)
        {
            Time2 t1 = new Time2();
        }
      }
    }

';命名空间';而是像';键入';

我怀疑您至少遇到过两次相同的问题。

此处:

    namespace TimeTest
    {
        class TimeTest
        {
    }

你声明的类型与它所在的命名空间同名。不要这样做。

现在您显然对Time2有同样的问题。我怀疑如果您添加:

    using Time2;

到您的using指令列表中,您的代码将进行编译。但请,请,请解决更大的问题:名字的选择有问题。(点击上面的链接,了解为什么这是个坏主意的更多细节。)

(此外,除非你真的对编写基于时间的类型感兴趣,否则我建议你不要这样做……我认为的人正是这样做的。使用内置功能,或者第三方库,比如,嗯,我的。正确处理日期和时间令人惊讶。:)

namespace TestApplication // Remove .Controller
{
    public class HomeController : Controller
    {
       public ActionResult Index()
        {
            return View();
        }
    }
}

从名称空间中删除控制器字

class TimeTestnamespace TimeTest冲突。

如果不能更改命名空间和类名:

为类类型创建一个别名。

using TimeTest_t = TimeTest.TimeTest;
TimeTest_t s = new TimeTest_t();

所有的答案都表明了原因,但有时更大的问题是识别所有定义了不正确名称空间的地方。有了像Resharper这样使用文件夹结构自动调整命名空间的工具,很容易遇到这个问题。

您可以通过使用以下正则表达式在项目/解决方案中搜索来获得创建问题的所有行:

namespace .+'.TheNameUsedAsBothNamespaceAndType

如果你正在开发一个大型应用程序,并且不能更改任何名称,你可以键入.从命名空间中选择你想要的类型:

namespace Company.Core.Context{
  public partial class Context : Database Context {
    ...
  }
}
...
using Company.Core.Context;
someFunction(){
 var c = new Context.Context();
}

我在创建一个类时遇到了这个问题"Response.cs";在名为"的文件夹中;响应";。因此VS正在捕获new Response ()作为Folder/命名空间。

因此,我将类名更改为StatusResponse.cs,并调用new StatusResponse()。这解决了问题。

如果您在这里处理EF Core相关问题,这里有提示:

将迁移的子文件夹命名为不同于数据库上下文的名称

这将为您解决问题。

我的错误是这样的:ModelSnapshot.cs错误CS0118:上下文是一个命名空间,但使用起来像类型

出现这种情况是由于文件夹和类的名称相同。因此,名称空间和类名之间出现了混淆。

namespace CSEData.Scrapper.UnitOfWork
    {
        public class UnitOfWork
        {
            Task<int> Commit(){};
            void Dispose(){};
        }
    }

看看名称空间,它是";UnitOfWork";。和看看类名,它也是"UnitOfWork";所以我已经将名称空间名称(在我的情况下是文件夹名称)更改为";UnitOfWorks";

请检查您的类和命名空间名称是否相同

当名称空间和类名相同时,就会发生这种情况。当您想要使用名称空间时,只需写下名称空间的全名。

using Student.Models.Db;
namespace Student.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            List<Student> student = null;
            return View();
        }
    }

尽量避免为实体提供相同的命名空间名称,例如,如果您使用了如下所示的间隔名称,并且您试图调用一个以产品为实体名称的实体,则会出现错误

下面是名称空间你的代码在哪里

Company.Project.APPLICATION.Product.Commands

下面的代码会给你"产品"是一个"命名空间",但使用起来像一个"类型"

Product product = new Product()

因此,请尝试重命名您的实体或名称空间。

namespace Test //Remove .Controller

{公共类HomeController:控制器{公共IActionResult索引(){return View();}}}

//这是个好主意。。

如果错误为

第26行:
第27行:@foreach(模型中的客户-客户)第28行:{第29行:

提供全名空间
喜欢@foreach(模型中的Start.Models.customer客户)