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

C#-是否将静态类初始化为非静态类?,c#,C#,我有这门课: [DataContract] public class Connection { [DataMember] public string UserName { get; set; } public Connection(string userName) { UserName = userName; } } 现在我需要这个类,但在我的项目中,我会使用这样的类: public static class Connection {

我有这门课:

[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()
    {
    }
}
[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;

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

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

public List<Connection> { get; set; }
公共列表{get;set;}
更多信息请参见Jon Skeet的答案


我建议研究面向对象编程的坚实原则,并尝试将“连接”类的功能抽象为多个。如果您能提供更多关于您要做什么的信息,我将很乐意提出建议。

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

public List<Connection> { get; set; }
公共列表{get;set;}
更多信息请参见Jon Skeet的答案


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

您可以像这样合并代码:

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

    static Connection()
    {
    }
}
[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;
。。。然后像这样使用它:

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

    static Connection()
    {
    }
}
[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;

您可以像这样合并代码:

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

    static Connection()
    {
    }
}
[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;
。。。然后像这样使用它:

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

    static Connection()
    {
    }
}
[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;

您想要一个单例,或一个静态引用您想要一个单例,或一个静态引用。这样您就可以执行
列表…
,问题的另一部分您的默认连接会创建一个与名为“username”的硬编码用户的连接。“我不明白它是如何有用的。@路易斯菲利浦,这只是一个例子。您可以从
web.config
app.config
或数据库等中读取默认用户名。还可以执行
列表…
,问题的另一部分您的默认连接创建了一个与名为“username”的硬编码用户的连接。“我不明白它是如何有用的。@路易斯菲利浦,这只是一个例子。您可以从
web.config
app.config
或数据库等中读取默认用户名。