gpt4 book ai didi

c# - 为什么命名空间/导入在 c# 和 Razor 之间的工作方式不同?

转载 作者:太空狗 更新时间:2023-10-30 01:05:03 26 4
gpt4 key购买 nike

我和同事注意到 Razor 和导入命名空间有些奇怪。

这是我们的测试类,我们将尝试从 c# 文件和 Razor View 访问。

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 代码示例。 “子”命名空间不可访问。

@using test
@(new c1()) @* Works *@
@(new test.sub.c2()) @* Works *@
@(new sub.c2()) @* Cannot be seen *@

有没有人解释为什么它在我们的类文件中有效但在我们的 View 中无效?

最佳答案

sub.c2 在您的代码中工作,因为您在命名空间“test”中。将命名空间更改为 titi,您会发现它不起作用

namespace titi
{
using 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(); //don't work
}
}
}

namespace test
{
using 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 because your are in namespace *test*
}
}
}

您的 Razor 代码位于另一个命名空间(例如,不同于 test),因此 sub.c2 不起作用。

关于c# - 为什么命名空间/导入在 c# 和 Razor 之间的工作方式不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20226160/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com