类库命名空间层次结构不起作用
本文关键字:不起作用 层次结构 命名空间 类库 | 更新日期: 2023-09-27 18:25:41
我正试图在我的类库中实现C#中使用的命名空间层次结构。以下是我要做的:
namespace Parent
{
namespace Child
{
Class ChildClass { }
}
Class ParentClass { }
}
编译类库后,它没有按预期工作。这是我预期的工作原理。
要访问ChildClass
,必须访问using Parent.Child
。但仅通过CCD_ 4就可以访问CCD_。
我可以做到这一点,而无需编译类库,而是将cs文件添加到项目中。但是,当我编译为DLL并将其作为引用添加到项目中时,我无法访问子名称空间。
更新:每个类都有不同的文件。当我将所有名称空间和类写入一个文件时,它似乎可以工作。但为什么呢?
有没有办法在C#中实现这一点?
我认为您的类缺少public
;以下代码适用于我。
namespace Parent
{
namespace Child
{
public class ChildClass { }
}
public class ParentClass
{
}
}
我可以创造;
Parent.ParentClass p;
Parent.Child.ChildClass c;
这是你期望的工作原理。
EDIT:每个类方法的单独cs文件;
ParentClass.cs
namespace Parent
{
public class ParentClass{ }
}
ChildClass.cs
namespace Parent
{
namespace Child
{
public class ChildClass { }
}
}
这似乎对我有效。
您正在嵌套类和名称空间,这一切似乎都有点混乱。为什么不保留一个更平坦的名称空间结构并在类中进行嵌套呢。请记住,不需要嵌套命名空间或类来维护父子关系。
阅读以下内容:亲子类关系设计模式
这应该会让你朝着正确的方向开始:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication2
{
using System;
using System.Collections.Generic;
public class ChildClass
{
private ParentClass parent;
public ChildClass(ParentClass parentIn)
{
parent = parentIn;
}
public ParentClass Parent
{
get { return parent; }
}
}
public class ParentClass
{
private List<ChildClass> children;
public ParentClass()
{
children = new List<ChildClass>();
}
public ChildClass AddChild()
{
var newChild = new ChildClass(this);
children.Add(newChild);
return newChild;
}
}
public class Program
{
public static void Main()
{
Console.WriteLine("Hello World");
var p = new ParentClass();
var firstChild = p.AddChild();
var anotherChild = p.AddChild();
var firstChildParent = firstChild.Parent;
var anotherChildParent = anotherChild.Parent;
}
}
}