【发布时间】:2016-02-09 10:30:46
【问题描述】:
不知道如何解释,所以我会尽量提供尽可能详细的信息。 我正在制作一个网络库,我需要为我的 NetClient 类提供一个部分,例如此示例中的 Headers:
NetClient netClient = new NetClient("host", port);
netClient.Headers.Add("Name", "Value");
我认为这会起作用,但它不起作用(在 NetClient 类的实例中根本看不到 Headers 类):
namespace NetLib
{
class NetClient
{
public string Host { get; }
public int Port { get; }
public NetClient(string host, int port)
{
this.Host = host;
this.Port = port;
}
class Headers
{
class Header
{
public string Name { get; }
public string Value { get; }
internal Header(string name, string value)
{
this.Name = name;
this.Value = value;
}
}
我在提交的答案的帮助下解决了我的问题,这就是我的代码现在的样子:
public sealed class NetClient
{
public string Host { get; set; }
public int Port { get; set; }
public Headers Headers { get; private set; }
public NetClient(string host, int port)
{
this.Headers = new Headers();
this.Host = host;
this.Port = port;
}
}
public sealed class Headers
{
public class Header
{
public string Name { get; }
public string Value { get; }
internal Header(string name, string value)
{
this.Name = name;
this.Value = value;
}
}
【问题讨论】:
-
这是NetClient的完整源码吗?您似乎正在尝试使用嵌套类(标题)作为属性。
-
你刚刚定义了类。您只能访问静态成员。要访问实例成员,您必须创建该类的属性。所以你必须在 NetClient 中也有 Headers 的实例
-
这不是完整的代码,但我认为不需要其余的。我知道我可以在 NetClient 中创建一个 Headers 成员,但是有什么办法可以绕过它吗?
-
只有当你像@m-kazem-akhgary 所指出的那样将标题设为静态时。但是如果不查看其余代码,就无法判断这是否会对您有所帮助。到目前为止提供的大多数答案似乎都是更好的解决方案。
标签: c# class namespaces