';命名空间';而是像';键入';
本文关键字:键入 命名空间 | 更新日期: 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 TimeTest
与namespace 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客户)