![](/img/trans.png)
[英]Why do I need “field:” in my attribute declaration “[field:NonSerialized]”?
[英]Why do I need to include part of my namespace despite having a 'using' declaration?
我的解決方案中有一個項目旨在提供一些核心功能。 它的命名空間是MyCompanyName.ProductName.FunctionSet
。 目前,該項目包括兩個班級。 customer.cs
和core.cs
核心類是靜態的,並且包含靜態方法EntryPoint()。
我在解決方案中有一個控制台應用程序。 它的命名空間是MyCompanyName.ProductName.TaskMan
。 我創建了對上面核心項目的引用,並為名稱空間添加了using指令。
Main()
中的其中Core.EntryPoint();
是Core.EntryPoint();
。 注意,它不包括名稱空間的任何部分。 代碼運行良好。
現在,為了解決錯誤(無法解決符號'EntryPoint'),我需要將行更改為FunctionSet.Core.EntryPoint();
。 我需要添加名稱空間的最后一部分。
為什么需要添加名稱空間的那一部分? 有什么想法為什么突然停止工作? 我可以做些什么來忽略名稱空間部分嗎? 如果我堅持下去,這沒什么大不了的,但是我確實想知道如何以及為什么。
編輯:我保留了下面的大塊頭,但現在不確定是否相關。
我懷疑其中之一是正確的:
如果您可以發布一個簡短而完整的程序(僅兩個類就足夠了,僅使用命名空間,使用指令,類聲明和方法-不需要任何業務邏輯),那么應該很容易進行整理。
盡管名稱空間是相對於當前名稱空間解析的,但名稱空間相對於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節。
您是否嘗試過在文件開頭的using語句中添加功能?
using FunctionSet.Core.EntryPoint
EntryPoint();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.