C# - 将静态类初始化为非静态类?

时间:2013-09-24 14:57:16

标签: c#

我有这堂课:

[DataContract]
public class Connection
{
    [DataMember]
    public string UserName { get; set; }

    public Connection(string userName)
    {
        UserName = userName;
    }
}

现在我需要这个类,但在我的项目的一部分,我真的会使用这样的类:

public static class Connection
{
    public static string UserName { get; set; }

    static Connection()
    {
    }
}

有没有办法将这些代码合并在一起,所以我可以在我的项目中使用这个类的两个版本(某个地方我想要一个静态的,单个Connection实例,但在其他地方我想要一个Connections列表)?

2 个答案:

答案 0 :(得分:5)

您可以合并这样的代码:

[DataContract]
public class Connection
{
    [DataMember]
    public string UserName { get; set; }

    public Connection(string userName)
    {
        UserName = userName;
    }

    public static Connection Default { get; set; }

    static Connection()
    {
        Default = new Connection("username");
    }

}

...并像这样使用它:

List<Connection> connections = new List<Connection>();

..或者像这样:

string defaultConnectionUserName = Connection.Default.UserName;

答案 1 :(得分:0)

您不能将静态类用作类型参数。因此,在您的情况下,您不能:

public List<Connection> { get; set; }

有关详细信息,请参阅Jon Skeet的this答案。

我建议研究面向对象编程的SOLID原理,并尝试将“连接”类的功能抽象为多个。如果您提供有关您正在尝试做的更多信息,我将很乐意提出建议。