我想在类中定义一个类。
示例:
private class newClient
{
public int ID { get; set; }
public string Name{ get; set; }
private class ClientExtraData
{
public string ExtraField1 { get; set; }
public string ExtraField2 { get; set; }
}
}
现在我想以这种方式访问ExtraField1:
newClient nclnt= new newClient();
string s=nclnt.ClientExtraData.ExtraField1;
可以这样做吗?
答案 0 :(得分:3)
要实现以下目标,
newClient nclnt= new newClient();
string s=nclnt.ClientExtraData.ExtraField1;
您需要做的就是公开这样的属性
private class NewClient
{
public class NewClient()
{
this.ClientExtraData = new ClientData();
}
public int ID { get; set; }
public string Name{ get; set; }
public ClientData ClientExtraData {get;set;}
}
其中ClientData
是程序集中的一个类。
答案 1 :(得分:1)
不,不能那样做。该类不是方法,属性或由类实例化的任何东西。
这也是非常糟糕的设计: - )
但你可以说:
var myclass = new ClassOne.ClassTwo()
答案 2 :(得分:0)
我通常会做这样的事情:
//the two classes can live in the same code file, if you want.
private class ClientExtraDataClass
{
public string ExtraField1 { get; set; }
public string ExtraField2 { get; set; }
}
private class newClient
{
public int ID { get; set; }
public string Name{ get; set; }
//you may want to make it a readonly property too,
// it depends on your needs.
public ClientExtraDataClass ClientExtraData = new ClientExtraDataClass();
}
答案 3 :(得分:0)
否则您无法以这种方式nclnt.ClientExtraData.ExtraField1;
访问内部类,因为如果要访问其属性,则必须具有该对象的实例。
然后,您无法使用private
访问修饰符,但必须以这种方式使用internal
:
class newClient
{
public int ID { get; set; }
public string Name { get; set; }
public ClientExtraData clientExtraData{ get; set; }
public newClient()
{
clientExtraData = new ClientExtraData();
}
internal class ClientExtraData
{
public string ExtraField1 { get; set; }
public string ExtraField2 { get; set; }
}
}
如果您希望以ClientExtraData
方式在public
之外访问,则可以internal
newClient
代替newClient.ClientExtraData clientExtraData = new newClient.ClientExtraData();
:
newClient nclnt= new newClient();
string s = nclnt.clientExtraData.ExtraField1;
那么你可以这样做:
{{1}}
答案 4 :(得分:0)
使用您的代码完全实现此目的
newClient nclnt= new newClient();
string s=nclnt.ClientExtraData.ExtraField1;
newClient
类必须为public
ClientExtraData
课程必须为public
和static
但更好的方法是创建类,其中newClient包含ClientExtraData类实例的Get-Property。
答案 5 :(得分:0)
类newClient { public int ID {get;组; } public string Name {get;组; }
public class ClientExtraData
{
public static string ExtraField1 { get { return "10"; } }
public string ExtraField2 { get; set; }
}
}
访问代码:
newClient nclnt = new newClient(); string s = newClient.ClientExtraData.ExtraField1;