我和同事在使用Razor和导入命名空间时发现了一些奇怪的问题。
这是我们的测试类,我们将尝试从C#文件和Razor视图中访问它。
namespace test
{
public class c1 {}
}
namespace test.sub
{
public class c2 {}
}
这是我们的C#代码示例。
using test;
namespace test
{
public class testbed
{
testbed()
{
c1 o1 = new c1(); //works
test.sub.c2 o2 = new test.sub.c2(); //works
sub.c2 o3 = new sub.c2(); //works
}
}
}
这是我们Razor代码的示例。"sub"命名空间不可访问。
@using test
@(new c1()) @* Works *@
@(new test.sub.c2()) @* Works *@
@(new sub.c2()) @* Cannot be seen *@
有人能解释一下为什么这在我们的类文件中可行,但在我们的视图中却不行吗?
test
命名空间,但与您的C#代码不同的关键是namespace
关键字。 - vgruusing test;
的使用语句,这将使c1 o1 = new c1()
成立。我认为我的解释或问题中缺少了某些东西,这使得您的工作没有集中在我们的问题上,对此感到抱歉。因此,如果您添加使用语句,您会发现唯一无法工作的是sub.c2 o3 = new sub.c2();
。 - Jessysub.c2 o3 = new sub.c2();
这是设计意图吗?示例代码。 - Jessy