我有一个类库项目,和我的名字空间/主类看起来是这样的:将类文件划分为部分类会影响作用域?
文件: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