静态类可以有类型的静态类的属性?

问题描述 投票:2回答:2

我想组应用的设置在组更加清晰。对于这个被创建应该包含我的应用程序的部分的不同设置组静态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"]);}
    }
}

问题是,我得到一个错误,说静态类型不能用作返回类型。

这个问题能解决或者我需要使用一些其他TECHNIC能够调用不同的组我的设置,如:AppSettings.AppSettingsGroupA.IpAddress或AppSettings.AppSettingsGroupB.IpAddress

感谢您的帮助,

c# static
2个回答
1
投票

这是怎样的一个尴尬的你正试图在这里存档什么,我没有看到真正的需要,为什么都AppSettingsGroupAAppSettingsGroupB必须static。要存档可以通过staticAppSettingsGroupA去除AppSettingsGroupB刚才的所作所为......这样,你仍然可以有staticAppSettings性能。

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");
}

注: C#6.0属性语法已使用


2
投票

“否”,基本上是 - 你不能这样做。如果你只是希望他们分层次的,你可以窝在静态类型里面AppSettings,但IMO更平常的事情将是他们只是不能是静态的。

嵌套静态版本:

public static class AppSettings
{
    public static class GroupASettings
    {
        public static IPAddress IpAddress { ... }

    public static class GroupBSettings
    {
        public static IPAddress IpAddress { ... }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.