我有一個類庫項目,和我的名字空間/主類看起來是這樣的:將類文件劃分爲部分類會影響作用域?
文件:Document.cs
namespace HtmlEngine
{
public class Document : IDisposable
{ ...
public class DocumentActionReplaceByTag : IDocumentAction
{
所有這一切工作正常,而在另一個項目/組件,我把:
using HtmlEngine;
...
DocumentActionReplaceByTag currentDocAction = new HtmlEngine.DocumentActionReplaceByTag("[NEXT_PART]");
它完美地工作。但是,現在我已經將該Document類文件分成幾個文件,分別稱爲DocumentActions.cs,DocumentSections.cs,並將主要功能保留在Document.cs文件中。在每個這些頂我把:現在
public partial class Document : IDisposable
{
,在消費項目中,我得到一個「無法解析符號'DocumentActionReplaceByTag」的錯誤。我仍然有我對HtmlEngine的使用參考。
上「網我能找到的這個職位它描述了我的困境同樣最接近的事,但他並不瞭解發生的原因說得很清楚:http://www.daniweb.com/software-development/csharp/threads/140673/understanding-partial-classes
我一直相信局部類是句法糖和他們在彙編之前合併成一個類。我重複了每個部分類聲明的接口,不確定這可能是一個因素。
爲什麼現在這會超出範圍?
謝謝Andris。這是正確的,添加明確的引用做這項工作,但我想繼續訪問沒有前綴的DocumentActionReplaceByTag。這是它在將課程分開之前的工作原理。我確實從其他文件中刪除了IDisposable,但這仍然沒有任何區別。我不能添加「使用HtmlEngin.Document」,因爲這不是一個命名空間 - 我的問題是爲什麼它的行爲不同(有希望,我能做些什麼來解決它)。 Thx – Glinkot 2012-04-02 08:11:51
我使用嵌套類添加示例。如果您覺得我不瞭解您的情況,請提供更多詳情。 – Andris 2012-04-03 05:53:22
嗨安德里斯。在這種情況下(請參閱原始問題中的desc)我使用來自不同程序集/名稱空間的類。嵌套類可以在沒有限定的情況下實例化,當類在單個文件中時,但是當我將它分成部分類時,這不再起作用!根據該人在我的問題鏈接中的描述。我不明白爲什麼我需要使用父類來限定每個元素。我只需要重新組合類,如果它歸結爲,並使用區域。無論如何,這可能會更好,但我仍然想知道爲什麼範圍發生變化。 – Glinkot 2012-04-03 08:51:50