我的解决方案中有一个项目旨在提供一些核心功能。它的名称空间是MyCompanyName.ProductName.FunctionSet
。这个项目包括两个班级; customer.cs
和core.cs
。核心类是静态的,包含一个静态方法EntryPoint()。
我在解决方案中有一个控制台应用程序。其名称空间为MyCompanyName.ProductName.TaskMan
。我创建了对上面核心项目的引用,并为命名空间添加了using指令。
Main()
中的一行是Core.EntryPoint();
。注意,它不包括命名空间的任何部分。代码运行正常。
现在,为了解决错误(无法解析符号'EntryPoint'),我需要将行更改为FunctionSet.Core.EntryPoint();
。我需要添加命名空间的最后一部分。
为什么我需要添加命名空间的那部分?任何想法为什么它突然停止工作?有什么办法可以省略命名空间部分吗?如果我坚持这一点,这不是什么大问题,但我确实想知道如何以及为什么。
答案 0 :(得分:1)
我怀疑其中一个是真的:
如果你可以发布一个简短但完整的程序(只有两个类应该足够,只有命名空间,使用指令,类声明和方法 - 不需要任何业务逻辑),它应该很容易理清。
命名空间相对于using
指令未解析,尽管它们相对于当前命名空间已解析。例如:
namespace Outer.Inner
{
class Foo
{
public static void Bar() {}
}
}
namespace Outer.OtherInner
{
class Test1
{
static void Method()
{
// Resolved to Outer.Inner.Foo.Bar()
Inner.Foo.Bar();
}
}
}
namespace OtherOuter
{
using Outer;
class Test2
{
static void Main()
{
// This is invalid
Inner.Foo.Bar();
}
}
}
有关完整的详细信息,请参阅C#规范的第3.8节。
答案 1 :(得分:0)
您是否尝试在文件开头的using语句中添加该函数?
using FunctionSet.Core.EntryPoint
EntryPoint();