我正在尝试将应用程序设置分组,以提高清晰度。为此,创建了一个静态AppSettings.cs类,该类应包含应用程序各部分的不同设置组:
AppSettings
|--AppSettingsGroupA
|--AppSettingsGroupB
|--AppSettingsGroupC
代码如下:
public class AppSettings
{
public static AppSettingsGroupA GroupASettings{ get; set; }
public static AppSettingsGroupB GroupBSettings{ get; set; }
}
public static class AppSettingsGroupA
{
public static IPAddress IpAddress
{
get{return IPAddress.Parse("192.168.0.1"]);}
}
}
public static class AppSettingsGroupB
{
public static IPAddress IpAddress
{
get{return IPAddress.Parse("192.200.2.100"]);}
}
}
问题是我收到一条错误消息,说静态类型不能用作返回类型。
这可以解决吗,还是我需要使用其他技术才能在不同的组中调用我的设置,例如:AppSettings.AppSettingsGroupA.IpAddress或AppSettings.AppSettingsGroupB.IpAddress
感谢您的帮助,
答案 0 :(得分:1)
“不”,基本上-您不能那样做。如果只希望它们分层,则可以{strong>嵌套 AppSettings
中的静态类型,但是IMO更为常见的是,它们不是静态的。
嵌套静态版本:
public static class AppSettings
{
public static class GroupASettings
{
public static IPAddress IpAddress { ... }
public static class GroupBSettings
{
public static IPAddress IpAddress { ... }
}
}
答案 1 :(得分:0)
您要在此处存档的文件有点尴尬,我不认为为什么AppSettingsGroupA
和AppSettingsGroupB
都必须static
才是真正的需要。只需将static
和AppSettingsGroupA
中的AppSettingsGroupB
删除即可完成要存档的工作。这样,您仍可以在static
中拥有AppSettings
属性。
public static void Main(String[] args)
{
AppSettings.GroupASettings = new AppSettingsGroupA();
AppSettings.GroupBSettings = new AppSettingsGroupB();
Console.WriteLine(AppSettings.GroupASettings.IpAddress);
Console.WriteLine(AppSettings.GroupBSettings.IpAddress);
}
public class AppSettingsGroupA
{
public IPAddress IpAddress => IPAddress.Parse("192.168.0.1");
}
public class AppSettingsGroupB
{
public IPAddress IpAddress => IPAddress.Parse("192.200.2.100");
}
n.b。已使用c#6.0属性语法